Java.io utilise des modèles de conception tels que le mode décoratif en mode adaptateur pour résoudre les problèmes de prise et d'entrée et de sortie des flux de caractères.
Le flux d'octets ne peut traiter qu'un octet à la fois, et afin de faciliter le fonctionnement des données, le flux de socket est ajouté.
Introduction du problème:
Pourquoi le flux tamponné est-il plus efficace que les flux d'octets de fichiers ordinaires?
Pour les opérations sans tampon, un octet doit être écrit pour chaque lecture d'octets.
Étant donné que les opérations IO impliquant des disques sont beaucoup plus lentes que les opérations de mémoire, les flux sans tampon sont très inefficaces.
Un flux avec tampon peut lire plusieurs octets à la fois, mais n'écrit pas sur le disque, mais est simplement placé en mémoire en premier.
Lorsque vous avez suffisamment de taille de tampon, écrivez-le sur le disque à la fois. Cette méthode peut réduire le nombre d'opérations de disque et la vitesse sera beaucoup plus élevée!
C'est la différence entre les deux.
Problème de processus:
S'il n'y a pas de zone de cache, à chaque fois que vous lisez, une opération IO sera envoyée;
Il y a une zone de cache. Lorsque vous lisez la première fois, X octets sera lu et mis dans la zone de cache. Ensuite, les lectures suivantes seront lues à partir du cache. Lorsque vous lisez à la fin de la zone de cache, X octets sera relu et mis dans la zone de cache.
Il est évident que la deuxième méthode réduira les opérations IO et sera plus efficace. L'inconvénient est qu'il consomme plus de mémoire.
Les flux d'entrée et de sortie Java sont conçus à l'aide de l'encapsulation multicouche
Le niveau le plus bas InputStream et OutputStream sont basés sur des flux d'octets et n'ont pas de mécanisme de cache. Ils sont généralement encapsulés et utilisés après utilisation par BufferInputStream et BufferOutputStream.
La méthode de lecture de BufferInputStream bloque le fil. BufferInputStream.read (BUF) lira tout le flux d'entrée dans BUF avant de revenir.
BufferOutputStream.Write (BUF); sortira le contenu dans le BUF au flux de sortie, mais n'oubliez pas de rincer;
Il existe également un imprimé et un imprimeur relativement faciles à utiliser qui peuvent être automatiquement actualisés, mais pour les flux d'octets.
Les flux d'octets sont généralement utilisés pour transférer des fichiers binaires et d'autres flux de caractères. Ils sont souvent enveloppés de lecteur.
Les plus couramment utilisés sont BufferInputStreamReader et PrintWinter. La méthode de lecture de BufferInputStreamReader est très pratique et rincera automatiquement lors de la rencontre / R / D.
Printwrinter Tant que la propriété Refresh est définie sur TRUE dans le constructeur, sa méthode println peut être automatiquement actualisée sans rinçage.
FilterInputStream et FilterOutputStream: le flux de filtre, le débit de tampon et le flux de données sont tous deux hérités d'ici.
Pour les flux de tampons, les données ne seront vraiment transférées au flux de sortie que lorsque le tampon est plein, mais la méthode Flush () peut être utilisée pour envoyer des données à partir du tampon non rempli artificiellement; La méthode d'encodage du fichier ne peut pas être déterminée et il est difficile de s'appliquer sur le réseau.
Le plus souvent utilisé dans la pratique est que le flux de données peut permettre à l'expéditeur et au récepteur de traiter en fonction du même codage.
DatAnputStream et DataOutputStream: peuvent accepter une ligne de données, peuvent les encoder, ou il peut être un flux de socket, un flux d'octets de fichier de socket et un flux d'octets de réseau, et l'ordre de lecture et d'écriture doit être cohérent, sinon une exception se produira lors de la lecture.
DatainputStream est utilisé pour décorer d'autres flux d'entrée, qui "permet aux applications de lire les types de données Java de base à partir du flux d'entrée sous-jacent de manière indépendante de la machine". Les applications peuvent utiliser DataOutputStream pour rédiger des données lues par DatainputStream.
Ce qui précède est le flux de tampon de flux de flux de flux d'entrée et de sortie Java.io et le flux de données de données introduit par l'éditeur. J'espère que ce sera utile à tout le monde. Si vous avez des questions, veuillez me laisser un message et l'éditeur répondra à tout le monde à temps. Merci beaucoup pour votre soutien au site Web Wulin.com!