Question

J'utilise BufferedReader et PrintWriter pour parcourir chaque ligne d'un fichier d'entrée, modifier certaines lignes et afficher le résultat. Si une ligne ne subit aucune modification, elle est simplement imprimée telle quelle dans le fichier de sortie. Cependant, pour une raison quelconque, le processus se termine prématurément. Le code ressemble à ceci:

BufferedReader in = new BufferedReader(new FileReader("in.txt"));
FileOutputStream out = new FileOutputStream("out.txt");
PrintWriter p = new PrintWriter(out);
String line = in.readLine();

while(line!=null)
{
   if(line is special)
      do edits and p.println(edited_line);
   else
      p.println(line);

   line = in.readLine();
}

Cependant, pour une raison quelconque, ce processus se termine prématurément (en fait, il affiche une demi-ligne) vers la toute fin de mon fichier d'entrée. Une raison évidente à cela? La boucle while est clairement terminée par un null. Et c'est vers la fin de mon fichier txt 250k + line. Merci!

Était-ce utile?

La solution

Où videz-vous / fermez-vous PrintWriter ou FileOutputStream? Si le programme se termine et que cela n’est pas fait, tous vos résultats ne seront pas écrits.

Vous avez besoin de out.close () (éventuellement un p.flush () ?) à la fin de votre processus pour fermer le flux de sortie du fichier

Autres conseils

Essayez d’ajouter un p.flush () après la boucle.

Le vidage automatique de PrintWriter n'est pas activé, il est donc probable que le dernier bit du fichier ne soit pas vidé avant la fin du programme.

Ajouter un p.flush () après votre boucle while devrait faire l'affaire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top