159 votes

Quel est l'objectif de la fonction flush() dans les flux Java ?

En Java, flush() est utilisée dans les flux. Mais je ne comprends pas à quoi sert cette méthode.

fin.flush();

Faites-moi part de vos suggestions.

129voto

codaddict Points 154968

A partir de la documents de la flush méthode :

Vide le flux de sortie et force les octets de sortie mis en mémoire tampon à être écrits. Le contrat général de flush est que son appel indique 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 destinée à améliorer les performances d'entrée/sortie. Pour en savoir plus, consultez cet article : Optimiser les performances des E/S Java .

40voto

Biman Tripathy Points 353

Lorsque vous écrivez des données dans un flux, elles ne sont pas écrites immédiatement et sont mises en mémoire tampon. Il faut donc utiliser flush() lorsque vous devez vous assurer que toutes les données de la mémoire tampon sont écrites.

Nous devons nous assurer que toutes les écritures sont terminées avant de fermer le flux. flush() est appelé dans la fenêtre de l'auteur du fichier/de la mémoire tampon. close() .

Mais si vous souhaitez que toutes vos écritures soient sauvegardées à tout moment avant de fermer le flux, utilisez l'option flush() .

31voto

user3004437 Points 31

Lorsque nous donnons une commande, les flux de cette commande sont stockés dans l'emplacement de mémoire appelé tampon (un emplacement de mémoire temporaire) dans notre ordinateur. Lorsque tous les emplacements de mémoire temporaire sont pleins, nous utilisons la fonction flush(), qui efface tous les flux de données, les exécute complètement et crée un nouvel espace. -J'espère que vous aurez compris

9voto

Si le tampon est plein, toutes les chaînes qui y sont stockées seront sauvegardées sur le disque. Les tampons sont utilisés pour éviter les "Big Deals !" et la surcharge de travail.

Dans la classe BufferedWriter qui est placée dans les librairies Java, il y a une ligne comme :

private static int defaultCharBufferSize = 8192;

Si vous souhaitez envoyer des données avant que la mémoire tampon ne soit pleine, vous avez le contrôle. Il suffit de le vider. Les appels à writer.flush() disent, "envoyez tout ce qu'il y a dans le tampon, maintenant !

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

pages:453

8voto

Ehsan Points 323

En plus des autres bonnes réponses données ici, cette explication m'a permis d'y voir plus clair :

Une mémoire tampon est une partie de la mémoire utilisée pour stocker un flux de données (caractères). Ces caractères ne seront parfois envoyés qu'à une (par exemple, un moniteur) que lorsque la mémoire tampon est pleine ou qu'elle répond à un un certain nombre de caractères. Cela peut entraîner un retard de votre système si vous n'avez que quelques caractères. si vous n'avez que quelques caractères à envoyer à un périphérique de sortie. La méthode flush() permet de vider immédiatement le contenu de la mémoire tampon dans le flux de sortie. de sortie.

Source : https://www.youtube.com/watch?v=MjK3dZTc0Lg

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X