Comment utiliser la méthode flush() pour PrintWriter
J'ai quelques codes comme ceci:
PrintWriter pw = new PrintWriter(new BufferedReader(....));
for(int i=0; i<10; i++) {
pw.println("a");
pw.flush();//flush each time when println()?
}
pw.close();
Est le flush() dans chaque "pour" déclaration nécessairement? J'ai entendu dire que la méthode flush() serait auto invoquer lors de l'invoquer close() .
Si j'écris un code comme ceci:
PrintWriter pw = new PrintWriter(new BufferedReader(....), true);
et je ne voudrais pas écrire pw.flush() plus? Merci.
OriginalL'auteur janekey | 2012-03-29
Vous devez vous connecter pour publier un commentaire.
flush()
est probablement pas nécessaire dans votre exemple.Ce qu'il fait est de s'assurer que ce qui est écrit à l'auteur avant l'appel de
flush()
est écrit dans le flux sous-jacent, plutôt que de s'asseoir dans certains tampon interne.La méthode est très pratique dans plusieurs types de circonstances:
Si un autre processus (ou thread) doit examiner le fichier alors qu'il est en cours d'écriture, et il est important que l'autre voit de tous les récents écrit.
Si le processus d'écriture peut tomber en panne, et il est important qu'aucun écrit dans le fichier perdu.
Si vous écrivez à la console, et la nécessité de s'assurer que chaque message est affiché dès que c'est écrit.
OriginalL'auteur NPE
La deuxième est la meilleure option pour les utiliser, il faudra créer un autoflushable objet PrintWriter. Et si vous utilisez le premier cas, je ne pense pas que flush() est nécessaire dans votre cas.
OriginalL'auteur Chandra Sekhar