1. Grundlegende Eingangsströme und Ausgangsströme <br /> Fluss sind eines der wichtigsten grundlegenden Konzepte in Java. Das Lesen und Schreiben von Dateien, die Netzwerkübertragung und den Empfang, die Prozesskommunikation und das Streaming werden an fast allen Stellen verwendet, an denen Eingänge und Ausgabe erforderlich sind.
Wofür wird Streaming verwendet? Es ist für Eingabe und Ausgabe. Warum verwenden Eingabe und Ausgabe "Stream"? Da die Grundeinheit der Programmeingabe und -ausgabe Bytes ist, besteht die Eingabe darin, eine Reihe von Bytes zu erhalten, und die Ausgabe besteht darin, eine Reihe von Bytes zu senden. In vielen Fällen ist es jedoch unmöglich, vor der Verarbeitung alle Bytes zu erhalten, aber ein wenig Verarbeitung zu erhalten. Wenn Sie beispielsweise World of Warcraft herunterladen, ist es unmöglich, alles in den Speicher herunterzuladen und auf die Festplatte zu speichern, aber einfach herunterladen und ein wenig speichern. Zu diesem Zeitpunkt ist diese Methode sehr geeignet.
In Java ist jeder Stream ein Objekt. Es gibt zwei Arten von Streams: Eingabestream (inputStream) und Ausgangsstrom (Ausgangsstream). Für den Eingangsstrom müssen Sie nur die Bytes aus dem Stream herausnehmen.
Wie werden Stream -Objekte erhalten? Verschiedene externe Systeme haben auch unterschiedliche Möglichkeiten, Ströme zu erhalten. Beim Lesen und Schreiben von Dateien müssen Sie beispielsweise ein DateiInputStream/FileOutputStream -Objekt erstellen, während die Netzwerkkommunikation Socket -Objekte verwendet, um Eingabe- und Ausgabestreams zu erhalten. Wenn eine Klasse Methoden wie getInputStream () oder GetOutputStream () hat, bedeutet dies im Allgemeinen, dass sie über ein Stream -Objekt eingegeben und ausgegeben wird.
InputStream ist ein Eingabestream.
Java.io.file; */ public class ReadFiledemo {// Programmeingabe public static void main (String [] args) {String path = "c: /boot.ini"; ; Byte [0]; Wenn der Rückgabewert -1 ist, bedeutet dies, dass es keinen Inhalt zum Lesen gibt. while (jederzeit! Content = ConcatByTearrays (Inhalt, Puffer, jederzeit); printStackTrace (); em. Geben Sie das Ergebnis der Verschmelzung der ersten Größe von Bytes1 und Bytes2*/ privates statisches Byte [] concatByTearrays (byte [] bytes1, byte [] bytes2, int sizefBytes2) {Byte [] Resu Lt = Arrays.Copyof (byteFBytes2) {bytes1) zurück .Length + sizeofBytes2));
Obwohl es sehr ausführlich ist, ist dies in der Tat die grundlegende Verwendung von InputStream. Beachten Sie, dass dies nur ein Beispiel dafür ist, wie eine Byte -Zeichenfolge aus dem Eingabestream gelesen werden. Tatsächlich bietet Java eine einfachere Möglichkeit, Textdateien zu lesen. Es wird später eingeführt.
Die Verwendung von OutputStream -Ausgabe ist eine sehr einfache Sache als das Lesen aus einem Stream. Hier ist ein Beispiel:
Java.io.outputStream; SaveFiledemo {public static void main (String [] args) löscht ioException {String path = "c: /now.txt"; ()) {System.err.println ("Datei kann nicht erstellt werden"); ) .ToString () .getBytes ()); System.out.println ("Datei schreiben ist abgeschlossen.");
Java liefert auch andere Streaming -Operationen, aber alle erweitern oder wrapper InputStream und OutputStream. Diese beiden Klassen sind also die Grundlage und müssen verstanden werden.
2. Leser und Schriftsteller
InputStream und OutputStream werden eingeführt, und dann werden Leser und Schriftsteller eingeführt. Diese beiden Klassen wickeln InputStream und OutputStream tatsächlich ein. Sie verarbeiten jedoch nicht Bytes, sondern keine Charaktere. Wenn der Inhalt in einem Stream Text ist, ist es einfacher, mit Leser/Schriftsteller zu verarbeiten. Hier ist ein Beispiel für das Lesen einer Textdatei mit Reader:
Java.io.Filereader importieren; String path = "c:/boot.ini"; Read (Puffer))! );} System.out.println (Inhalt);
Wie Sie den Autor verwenden, um Textinhalte in eine Datei zu schreiben, werde ich hier kein Beispiel geben.
Das obige Beispiel ist immer noch nicht die häufigste Art, Textdateien zu lesen. Java bietet einen BufferedReader, mit dem wir normalerweise Textdateien lesen. Hier ist ein Beispiel:
Java.io.BuffedReader importieren; path = "c:/boot.ini"; {Inhalt + = Zeile + "/n"; }
3.. Objektserialisierung <BR /> Objektserialisierung ist auch ein wichtiger Aspekt von Streaming -Anwendungen. Die Serialisierung besteht darin, ein Objekt in eine Reihe von Bytes umzuwandeln, die gespeichert oder an ein anderes Java -Programm zur Verwendung übergeben werden können. ObjectOutputStream und ObjectInputStream werden speziell für die Serialisierung und Deserialisierung verwendet. Hier ist ein einfaches Beispiel:
Java.IO.ObjectputStream; Importieren Sie java.io.eofexception; * Diese beiden Klassen werden zur Serialisierung bzw. der Deserialisierung verwendet. */ public class SerializationDemo {public static void main (String [] args) Ausnahme {String path = "c: /persons.data"; f.createNewFile (); Pfad)) p; Das Objekt wird in der angegebenen Datei gespeichert. ; ////////////////// .///////// .///////////////. ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ///////////////// Person implementiert serialisierbare {private String -Name; this.a ge = älter; oder
Dieses Beispiel kann Bytes und Charaktere nicht lesen und schreiben, da beide Klassen verpackt sind. Das obige ist nur ein einfaches Beispiel, und es gibt immer noch viele Dinge, auf die Sie achten müssen, wenn Sie eine Serialisierung gut schreiben möchten. Wenn Sie ein tieferes Verständnis der Serialisierung haben möchten, können Sie es hier überprüfen. Dieser Artikel konzentriert sich nur auf die Teile im Zusammenhang mit dem Streaming. Tatsächlich wird die Serialisierung selten angewendet, da die Serialisierung die Flexibilität verringert, sodass sie im Allgemeinen nicht verwendet wird, wenn Sie sie nicht verwenden.