[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
		    }	           				    
	      }


3 réponses

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

      Egalement fw.close();
      0
    2. 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
    3. Babybel
       
      Merci, mais ça ne change rien du tout ^^'
      0
  2. arth Messages postés 84 Date d'inscription   Statut Contributeur Dernière intervention   1 296
     
    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
    1. 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
  3. 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
    1. Babybel
       
      Merci je regarderai ca.
      0