Quel est le but de la méthode flush() en Java, les ruisseaux?
En Java, flush()
méthode est utilisée dans les cours d'eau. Mais je ne comprends pas, ce sont tous le but de l'utilisation de cette méthode?
fin.flush();
me dire quelques suggestions.
Vous devez vous connecter pour publier un commentaire.
De la docs de la
flush
méthode:La mise en mémoire tampon est principalement fait pour améliorer les performances d'e/S. Plus sur ce qui peut être lu à partir de cet article: Réglage De Java Les Performances I/O.
Lorsque nous donnons à toute commande, le flux d'exécution de la commande sont stockées dans l'emplacement de mémoire appelée mémoire tampon(temporaire emplacement de mémoire) dans notre ordinateur. Lorsque tous les temporaires emplacement de la mémoire est pleine alors nous utilisons la méthode flush(), qui la vide de tous les flux de données et les exécute complètement et donne un nouvel espace pour de nouveaux flux dans un tampon temporaire emplacement.
-Espérons que vous comprendrez
BufferedOutputStream
,BufferedWriter
,ObjectOutputStream,
et laPrintXXX
classes. Leflush()
méthode de n'importe quel flux ouWriter
ne fait rien.Lors de l'écriture de données sur un flux, il n'est pas écrit tout de suite, et il est mis en mémoire tampon. Donc, utiliser la méthode flush() lorsque vous avez besoin pour vous assurer que toutes vos données à partir de la mémoire tampon est écrit.
Nous devons nous assurer que toutes les écritures soient accomplies avant de nous fermer le flux de données, et c'est pourquoi la méthode flush() est appelée dans le fichier/tampon de l'écrivain close().
Mais si vous avez une exigence que tous vos écritures être enregistrées à tout moment avant de fermer le flux de données, utilisez la méthode flush()
FilterOutputStream
etFilterWriter
.Si le tampon est plein, toutes les chaînes qui est tamponnée sur elle, ils seront enregistrés sur le disque. La mémoire tampon est utilisée pour éviter de Gros des Offres spéciales! et les frais généraux.
Dans la classe BufferedWriter qui est placé en java libs, il y a une ligne comme:
livre de référence: https://www.amazon.com/Head-First-Java-Kathy-Sierra/dp/0596009208
pages:453
Les ruisseaux sont souvent consulté par les threads qui périodiquement les vide de leur contenu et, par exemple, de l'afficher sur l'écran, l'envoyer à un socket ou écrire dans un fichier. Ceci est fait pour des raisons de performances. Le rinçage d'un flux de sortie signifie que vous voulez vous arrêter, attendre que le contenu du flux de données pour être complètement transféré à sa destination, puis reprendre l'exécution avec le cours d'eau vide et le contenu envoyé.
De problème de performance, d'abord les données doivent être écrites dans le Buffer. Lorsque le tampon obtenez des données est écrit dans la sortie (Fichier,console etc.). Lorsque le tampon est partiellement remplie et que vous souhaitez l'envoyer à la sortie(fichier,console), alors vous devez appeler la méthode flush() manuellement, afin d'écrire partiellement rempli de la mémoire tampon de sortie(fichier,console).