Quel est le but de flush () dans les flux Java?


En Java, la méthode flush() est utilisée dans les flux. Mais je ne comprends pas, ce sont tous le but de l'utilisation de cette méthode?

fin.flush();

Dites-moi quelques suggestions.

Author: karn, 2010-02-26

6 answers

De la docs de la flush méthode:

Vide le flux de sortie et force tous les octets de sortie tamponnés à être écrits. Le contrat général de flush est que l'appeler est une indication que, si des octets précédemment écrits ont été mis en mémoire tampon par l'implémentation du flux de sortie, ces octets doivent immédiatement être écrits vers leur destination prévue.

La mise en mémoire tampon est principalement effectuée pour améliorer les performances des E/S. Plus à ce sujet peut être lu extrait de cet article: Réglage des performances d'E/S Java .

 78
Author: codaddict, 2016-07-12 11:49:18

Lorsque nous donnons une commande ,les flux de cette commande sont stockés dans l'emplacement de mémoire appelé buffer(un emplacement de mémoire temporaire) dans notre ordinateur.lorsque tout l'emplacement de mémoire temporaire est plein, nous utilisons flush() qui vide tous les flux de données et les exécute complètement et donne un nouvel espace aux nouveaux flux dans l'emplacement temporaire du tampon - J'espère que vous comprendrez

 22
Author: user3004437, 2013-11-18 11:10:21

Lorsque vous écrivez des données dans un flux, elles ne sont pas écrites immédiatement et elles sont mises en mémoire tampon. Utilisez donc flush () lorsque vous devez être sûr que toutes vos données de buffer sont écrites.

Nous devons être sûrs que toutes les écritures sont terminées avant de fermer le flux, et c'est pourquoi flush() est appelé dans file/buffered writer's close().

Mais si vous avez une exigence que toutes vos écritures soient enregistrées à tout moment avant de fermer le flux, utilisez flush ()

 16
Author: Biman Tripathy, 2016-12-29 09:55:28

Si le tampon est plein, toutes les chaînes qui y sont mises en mémoire tampon, elles seront enregistrées sur le disque. Buffers est utilisé pour éviter les grosses affaires! et les frais généraux.

Dans la classe BufferedWriter qui est placée dans les bibliothèques java, il y a une ligne comme:

private static int defaultCharBufferSize = 8192;

Si vous souhaitez envoyer des données avant que le tampon ne soit plein, vous avez le contrôle. Juste Le Rincer. Les appels à l'écrivain.flush () dites: "envoyez tout ce qui est dans le tampon, maintenant!

Livre de référence: https://www.amazon.com/Head-First-Java-Kathy-Sierra/dp/0596009208

Pages: 453

 3
Author: Semih Okan Pehlivan, 2016-09-21 09:03:24

Les flux sont souvent accessibles par des threads qui vident périodiquement leur contenu et, par exemple, l'affichent à l'écran, l'envoient à un socket ou l'écrivent dans un fichier. Ceci est fait pour des raisons de performances. Vider un flux de sortie signifie que vous souhaitez arrêter, attendre que le contenu du flux soit complètement transféré vers sa destination, puis reprendre l'exécution avec le flux vide et le contenu envoyé.

 2
Author: Silvio Donnini, 2010-02-26 07:45:09

Pour un problème de performance, les premières données doivent être écrites dans un tampon. Lorsque le tampon est plein, les données sont écrites dans la sortie (fichier, console, etc.). Lorsque le tampon est partiellement rempli et que vous souhaitez l'envoyer à la sortie(fichier,console), vous devez appeler manuellement la méthode flush() afin d'écrire un tampon partiellement rempli à la sortie(fichier, console).

 2
Author: vijaya kumar, 2015-04-04 15:56:52