Heim  >  Artikel  >  Java  >  Was ist der Unterschied zwischen Java-Streams?

Was ist der Unterschied zwischen Java-Streams?

爱喝马黛茶的安东尼
爱喝马黛茶的安东尼Original
2019-11-14 09:36:481759Durchsuche

Was ist der Unterschied zwischen Java-Streams?

Alle Daten im Programm werden in Form von Streams übertragen oder gespeichert. Wenn das Programm Daten benötigt, muss es den Eingabestream verwenden, um die Daten zu lesen, und wenn das Programm welche benötigt Beim Speichern der Daten wird der Ausgabestream verwendet.

Die Eingabe und Ausgabe im Programm werden in Form von Streams gespeichert, und was in den Streams gespeichert wird, sind eigentlich Byte-Dateien.

Byte-Stream und Zeichen-Stream

Es gibt zwei Hauptkategorien von Betriebsdateiinhalten im java.io-Paket: Byte-Stream und Zeichen-Stream, die beide geteilt sind in Eingabe- und Ausgabeoperationen. Die Ausgabe von Daten in einem Byte-Stream erfolgt hauptsächlich mit OutputStream und die Eingabe erfolgt mit InputStream. Die Ausgabe in einem Zeichen-Stream erfolgt hauptsächlich mit der Writer-Klasse und Eingabestreams hauptsächlich mit der Reader-Klasse. (Diese vier sind abstrakte Klassen)

Java bietet ein Paket für Eingabe- und Ausgabefunktionen, Java.io, einschließlich:

InputStream, OutputStream, Reader, Writer

InputStream und OutputStream sind beide für Byte-Streams konzipiert und werden hauptsächlich zur Verarbeitung von Bytes oder Binärobjekten verwendet.

Reader und Writer sind für Zeichenströme konzipiert (ein Zeichen belegt zwei Bytes) und werden hauptsächlich zur Verarbeitung von Zeichen oder Zeichenfolgen verwendet.

Die Zeichenstrom-Verarbeitungseinheit ist ein 2-Byte-Unicode-Zeichen, das mit Zeichen, Zeichenarrays bzw. Zeichenfolgen arbeitet, während die Bytestrom-Verarbeitungseinheit 1 Byte groß ist und mit Bytes und Byte-Arrays arbeitet. Daher wird der Zeichenstrom durch die Java Virtual Machine gebildet, die Bytes in 2-Byte-Unicode-Zeichen umwandelt, sodass mehrere Sprachen besser unterstützt werden! Wenn es sich um Audiodateien, Bilder und Lieder handelt, ist es besser, Byte-Streams zu verwenden. Wenn es sich um Chinesisch (Text) handelt, ist es besser, Zeichen-Streams zu verwenden.

Alle Dateien werden in Bytes gespeichert, nicht die Zeichen der Datei, sondern die Zeichen werden zuerst in Bytes kodiert und dann werden diese Bytes auf der Festplatte gespeichert. Beim Lesen einer Datei (insbesondere einer Textdatei) wird diese ebenfalls Byte für Byte gelesen, um eine Bytefolge zu bilden.

Der Byte-Stream kann für jede Art von Objekt verwendet werden, einschließlich binärer Objekte, während der Zeichen-Stream nur Zeichen oder Zeichenfolgen verarbeiten kann. 2. Der Byte-Stream bietet die Funktion, jede Art von E/A-Vorgang zu verarbeiten, kann jedoch keine Handles durchführen Unicode-Zeichen direkt und Zeichenströme reichen vollkommen aus.

Byte-Stream ist der grundlegendste, alle Unterklassen von InputStrem und OutputStream werden hauptsächlich zur Verarbeitung von Binärdaten verwendet. Er wird in Bytes verarbeitet, aber in Wirklichkeit sind viele Daten Text und das Konzept des Zeichenstroms Es wird vorgeschlagen, dass die Verarbeitung gemäß der Codierung der virtuellen Maschine erfolgt, d. h. der Zeichensatz wird durch InputStreamReader und OutputStreamWriter in Beziehung gesetzt Während der Entwicklung auftretende Fehler werden tatsächlich durch die Inkonsistenz bei der Konvertierung zwischen Zeichenströmen und Byteströmen verursacht.

Der Rückgabetyp der read()-Methode der Reader-Klasse ist int: das gelesene Zeichen als Ganzzahl (entspricht 16 Bits in zwei Bytes) im Bereich von 0 bis 65535 (0x00-0xffff), wenn Wenn das Ende des Streams erreicht ist, wird -1 zurückgegeben.

Obwohl read() von inputStream auch int zurückgibt, gibt es einen int-Byte-Wert im Bereich von 0 bis 255 zurück, da diese Klasse auf Byte-Streams ausgerichtet ist und ein Byte 8 Bits belegt. Wenn keine Bytes verfügbar sind, weil das Ende des Streams erreicht wurde, wird der Wert -1 zurückgegeben. Daher müssen Werte, die nicht durch 0-255 dargestellt werden können, über einen Zeichenstrom gelesen werden! Zum Beispiel chinesische Schriftzeichen.

php Chinesische Website, eine große Anzahl kostenloser Java-Einführungs-Tutorials, willkommen zum Online-Lernen!

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen Java-Streams?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Was ist Javas gcNächster Artikel:Was ist Javas gc