[Java] Ecriture incomplete d'un fichier...

Babybel -  
 Babybel -
Bonjour,

J'essaye de copier une certaine quantité de texte dans des fichiers que je génère,
mais le problème est que l'écriture est à chaque fois incomplète :

- un system.out.println(texte) copie le texte en entier
- j'ai essayé filewriter, printwriter, bufferedwriter...
- la taille des fichiers est différente (de 20ko à 1500ko)
- la "coupe" des fichiers semble aléatoire (pas de caractère spécial)

Si quelqu'un a une solution...

Mon dernier essai en date :


FileWriter fw = null;
	     try
	     {
	           fw = new FileWriter(patentName, false);
	           BufferedWriter output =new BufferedWriter(fw);
	           output.write(patentHTML.toString());
	           output.flush();
	     }
	     catch(IOException ioe){
	           System.out.print("Erreur : ");
	           ioe.printStackTrace();
	     }
	     finally{
	          try{
		        fw.close();
		  }catch(IOException e){
			//do something clever with the exception
		    }	           				    
	      }


A voir également:

3 réponses

Joe
 
Après output.flush(); il faut mettre output.close(); sinon le descripteur reste ouvert.
2
arth Messages postés 10414 Date d'inscription   Statut Contributeur Dernière intervention   1 293
 
En effet ;-)

Egalement fw.close();
0
KX Messages postés 19031 Statut Modérateur 3 020
 
D'ailleurs le flush te fera plus perdre du temps qu'autre chose puisque le close assure que toutes les données sont écrites (on se sert plutôt du flush sur des Sockets ou autres flux que l'on ne ferme pas)
0
Babybel
 
Merci, mais ça ne change rien du tout ^^'
0
arth Messages postés 10414 Date d'inscription   Statut Contributeur Dernière intervention   1 293
 
Et si tu affiches patentHTML ça donne quoi?

Y a-t-il une erreur?

Au fait c'est quoi comme type patentHTML?


Le loup, solitaire et mystérieux.
0
Babybel
 
ah oui au temps pour moi, patentHTML est un String : il contient un code source entier en HTML.
Si je fais System.out.println(patentHTML) ça revient au même que si je fais system.out.println(patentHTML.toString())
Je sais plus pourquoi j'avais essayé ça

Et donc ça affiche le code source en entier dans la console jusque la balise </HTML>
alors que le "write" s'arrete en plein milieu d'une phrase par moment
0
KX Messages postés 19031 Statut Modérateur 3 020
 
Essaye avec un code un peu plus "light"

try
{
    FileOutputStream out = new FileOutputStream(patentName);
    out.write(patentHTML.toString().getBytes());
    out.close();
}
catch (Exception e)
{
    e.printStackTrace();
}
0
Babybel
 
Merci je regarderai ca.
0