Java.io verwendet Entwurfsmuster wie Dekorationsmodus des Adaptermodus, um den Sockel und die Eingangs- und Ausgangsprobleme von Charakterströmen zu lösen.
Der Byte -Stream kann jeweils nur ein Byte verarbeiten, und um Daten zu erleichtern, wird der Socket -Stream hinzugefügt.
Problemeinführung:
Warum wird gepufferter Stream effizienter als normale Datei -Byte -Streams?
Für Operationen ohne Puffer muss ein Byte für jedes Byte -Lesen geschrieben werden.
Da IO -Operationen mit Scheiben viel langsamer sind als Speichervorgänge, sind Streams ohne Pufferung sehr ineffizient.
Ein Stream mit Puffer kann viele Bytes gleichzeitig lesen, schreibt jedoch nicht auf die Festplatte, wird aber zuerst in Speicher platziert.
Wenn Sie genügend Puffergröße haben, schreiben Sie sie gleichzeitig auf die Festplatte. Diese Methode kann die Anzahl der Festplattenoperationen verringern und die Geschwindigkeit wird viel höher sein!
Dies ist der Unterschied zwischen den beiden.
Wahrscheinlich verarbeiten:
Wenn es keinen Cache -Bereich gibt, wird jedes Mal, wenn Sie lesen, eine IO -Operation gesendet.
Es gibt einen Cache -Bereich. Wenn Sie das erste Mal lesen, werden X -Bytes gelesen und in den Cache -Bereich eingesetzt. Anschließend werden nachfolgende Lesevorgänge aus dem Cache gelesen. Wenn Sie bis zum Ende des Cache -Bereichs lesen, werden X -Bytes erneut gelesen und in den Cache -Bereich eingesetzt.
Es ist offensichtlich, dass die zweite Methode den IO -Betrieb verringert und effizienter ist. Der Nachteil ist, dass es mehr Speicher verbraucht.
Java-Eingangs- und Ausgangsströme werden unter Verwendung einer Mehrschichteinkapselung entwickelt
Der Eingangsstream und der Ausgangsstream mit niedrigster Ebene basieren auf Byte -Streams und haben keinen Cache -Mechanismus. Sie werden im Allgemeinen eingekapselt und nach Verwendung durch BufferinputStream und BufferoutputStream verwendet.
Die Lesemethode von BufferInputStream blockiert den Thread. BufferInputStream.read (BUF) wird vor der Rückkehr den gesamten Eingangsstream in BUF eingeleitet.
BufferoutputStream.write (BUF); Gibt den Inhalt im BUF in den Ausgangsstrom aus, aber denken Sie daran, zu spülen;
Es gibt auch einen relativ benutzerfreundlichen Printstream und Printwriter, der automatisch aktualisiert werden kann, jedoch für Byte-Streams.
Byte -Streams werden im Allgemeinen verwendet, um Binärdateien und andere Zeichenströme zu übertragen. Sie werden oft mit Leser verpackt.
Die am häufigsten verwendeten sind BufferinputStreamReader und Prcesswrinter. Die Readline -Methode von BufferInputStreamReader ist sehr praktisch und spüle automatisch bei der Begegnung /R /D.
Printwrinter, solange die Aktualisierungseigenschaft im Konstruktor auf true eingestellt ist, kann seine Println -Methode automatisch ohne Spülen aktualisiert werden.
FilterInputStream und FilteroutputStream: Von hier werden beide geerbt.
Für Pufferströme werden die Daten nur dann auf den Ausgangsstrom übertragen, wenn der Puffer voll ist, aber die Flush () -Methode kann verwendet werden, um Daten aus dem nicht gefüllten Puffer künstlich zu senden. Die Codierungsmethode der Datei kann nicht ermittelt werden und es ist schwierig, sich im Netzwerk anzuwenden.
Am häufigsten verwendete in der Praxis ist, dass der Datenstrom es dem Absender und dem Empfänger ermöglichen kann, gemäß derselben Codierung zu verarbeiten.
DataNputStream und DataOutputStream: Kann eine Datenzeile akzeptieren, können sie codieren oder es kann ein Socket -Stream sein, CAN -Socket -Byte -Stream- und Netzwerk -Byte -Stream sein, und die Reihenfolge des Lesens und Schreibens muss konsistent sein, andernfalls wird eine Ausnahme beim Lesen auftritt.
DataNputStream wird verwendet, um andere Eingabestreams zu dekorieren, mit denen "Anwendungen grundlegende Java-Datentypen aus dem zugrunde liegenden Eingabestream in maschinell unabhängiger Weise lesen können". Anwendungen können DataOutputStream verwenden, um Daten zu schreiben, die von DataNputStream gelesen werden.
Das obige ist der vom Editor eingeführte Java.IO -Eingangs- und Ausgangsstromfilterstream -Stream -Stream -Stream und Datenstrom. Ich hoffe, es wird für alle hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Editor wird allen rechtzeitig antworten. Vielen Dank für Ihre Unterstützung auf der Wulin.com -Website!