Récemment, j'apprenais des flux IO et j'ai constaté que la fonction Flush () apparaît à chaque fois. J'ai vérifié sa fonction et les fonctions principales sont les suivantes
// - - `` are
Réponse générale et incorrecte:
Les données dans le tampon sont enregistrées jusqu'à ce que le tampon soit plein. Vous pouvez également utiliser la méthode Flush pour forcer les données du tampon à être écrites ou utiliser la méthode Close () pour fermer le flux. Avant de fermer le flux, le flux de sortie du tampon écrit les données de tampon en même temps. Flash () et close () forcent les données à être écrites, donc les deux résultats sont les mêmes. Si vous ne l'écrivez pas, vous constaterez que vous ne pouvez pas l'écrire avec succès.
En réponse à la réponse ci-dessus, une réponse précise a été donnée
FileOutputStream hérite OutputStream et ne fournit pas de réécriture de la méthode Flush (). Ainsi, peu importe la quantité de contenu écrite, il passera directement le flux binaire à l'E / S du système d'exploitation sous-jacent. La chasse n'a aucun effet. Les fonctions de flux d'entrée et de sortie de la série tamponnée peuvent être vues à partir du mot tamponné qu'ils utilisent des tampons. L'application doit communiquer avec l'appareil à chaque fois IO, ce qui est très faible. Par conséquent, afin d'améliorer l'efficacité, le tampon est d'abord écrit dans le tampon lors de l'écriture sur l'appareil. Lorsque le tampon a suffisamment de données, il sera écrit sur l'appareil dans son ensemble.
Utilisez BufferedxxxStream. La taille du tampon par défaut est de 8k. Lors de la lecture, le tampon sera rempli (ou le fichier est lu) tout le temps. Lors de la rédaction, le contenu sera envoyé au tampon du noyau après que le tampon soit plein (ou opération à chasse d'eau). La raison de l'efficacité élevée est d'éviter de tomber dans le noyau du système d'exploitation pour chaque lecture d'octets (c'est une opération longue). Pour un code spécifique, veuillez consulter l'API par vous-même.
J'attacherai également une réponse de question de Baidu.
flush () signifie forcer le contenu du tampon à être écrit. En raison de certains mécanismes du système d'exploitation, afin d'éviter la lecture et l'écriture du disque continu, il existe un concept d'écriture retardée. (Faites attention à ne pas être confondu avec Fruit () actualiser), il est principalement utilisé dans IO, c'est-à-dire effacer les données de tampon. Généralement, lors de la lecture et de l'écriture de flux, les données sont d'abord lues dans la mémoire, puis écrites dans un fichier. Lorsque vous lisez les données, cela ne signifie pas que vos données ont été écrites, car il y en a encore une partie qui peut être laissée dans le tampon de mémoire. À l'heure actuelle, si vous appelez la méthode Close () pour fermer le flux de lecture et d'écriture, cette partie des données sera perdue, vous devez donc Flush () avant de fermer le flux de lecture et d'écriture. .
Il en va de même sur un serveur Web réseau. Afin d'éviter qu'un message soit envoyé après avoir écrit un octet, il y a un concept de tampon, comme une zone de mémoire 64k, lorsque le tampon est plein, il est écrit sur le disque à la fois (ou envoyé au navigateur client).
La méthode Flush est généralement exécutée lorsque l'écriture du programme est terminée. Suivez ensuite la méthode Close. Par exemple:
// Obtenez le flux de sortie. Bien sûr, cela dépend de l'environnement spécifique. Printwriter out = util.getWriter (); out.println ("sortir certaines informations, peut-être beaucoup"); out.flush (); out.close ();Autrement dit, la méthode Flush () consiste à sortir tous les contenus stockés en mémoire (sortie par lots). Par exemple, utilisé, par exemple, est un exemple typique de la classe FileWriter. En plus d'utiliser la sortie Flush, l'appel final à la méthode Close sera également la sortie du lot.
Importer java.io.filewriter; Importer java.io.ioException; classe publique A04 {public static void main (String args []) {filewriter fw; try {fw = new FileWriter ("c: //try.txt"); fw.write ("hello"); // fw.close (); // Cette phrase n'est pas ajoutée, le fichier ne peut pas être écrit et le fichier est vide! System.out.println ("OK"); } catch (ioException e) {// TODO Bloc de capture généré automatiquement e.printStackTrace (); }}}Résumer
Ce qui précède est tout le contenu de cet article sur le rôle et les méthodes d'utilisation des fonctions de chasse dans le langage Java. J'espère que ce sera utile à tout le monde. Les amis intéressés peuvent continuer à se référer à d'autres sujets connexes sur ce site. S'il y a des lacunes, veuillez laisser un message pour le signaler. Merci vos amis pour votre soutien pour ce site!