En Java, la méthode flush()
est utilisée dans les flux. Mais je ne comprends pas à quoi sert l'utilisation de cette méthode?
fin.flush();
dites-moi quelques suggestions.
A partir de la docs de la méthode flush
:
Vide le flux de sortie et force l'écriture de tous les octets de sortie mis en mémoire tampon. Le contrat général de vidage indique que l'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 être immédiatement écrits vers la destination souhaitée.
La mise en mémoire tampon est principalement faite pour améliorer les performances d'E/S. Vous trouverez plus d'informations à ce sujet dans cet article: Réglage Java Performance d'E/S .
Lorsque nous donnons une commande, les flux de cette commande sont stockés dans l'emplacement de mémoire appelé tampon (emplacement de mémoire temporaire) de 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, ce qui donne un nouvel espace aux nouveaux flux dans l’emplacement temporaire du tampon. -J'espère que tu comprendras
Lorsque vous écrivez des données dans un flux, celui-ci n'est pas écrit immédiatement et il est mis en mémoire tampon. Utilisez donc flush () lorsque vous devez vous assurer que toutes vos 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, et c’est pourquoi flush () est appelée dans le fichier close () de file/buffered writer.
Mais si vous avez besoin que toutes vos écritures soient sauvegardées à tout moment avant de fermer le flux, utilisez flush ()
Si la mémoire tampon est pleine, toutes les chaînes qui y sont mises en mémoire seront enregistrées sur le disque. Buffers est utilisé pour éviter les Big Deals! et frais généraux.
Dans la classe BufferedWriter placée dans Java libs, il existe une ligne comme celle-ci:
private static int defaultCharBufferSize = 8192;
Si vous voulez envoyer des données avant que le tampon ne soit plein, vous avez le contrôle. Il suffit de le rincer. Les appels à writer.flush () disent: "envoie tout ce qui est dans la mémoire tampon, maintenant!"
livre de référence: https://www.Amazon.com/Head-First-Java-Kathy-Sierra/dp/0596009208
pages: 453
Les flux sont souvent accédés par des threads qui vident périodiquement leur contenu et, par exemple, l’affiche à l’écran, l’envoient à un socket ou l’écrivent dans un fichier. Ceci est fait pour des raisons de performance. Le vidage d'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é.
Pour des problèmes de performances, les premières données doivent être écrites dans Buffer. Lorsque la mémoire tampon est pleine, les données sont écrites dans la sortie (fichier, console, etc.). Lorsque le tampon est partiellement rempli et que vous souhaitez l'envoyer en sortie (fichier, console), vous devez appeler la méthode flush () manuellement afin d'écrire du tampon partiellement rempli dans la sortie (fichier, console).