English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
In diesem Tutorial werden wir durch Beispiele lernen, wie man Java ObjectOutputStream und seine Methoden verwendet.
Die Klasse ObjectInputStream aus dem Paket java.io kann zum Lesen von Objekten verwendet werden, die von ObjectOutputStream先前编写的.
es die InputStream-Abstraktklasse fortsetzt.
Stellen Sie sicher, dass Sie die Klasse ObjectInputStream lernen, bevor Sie sicher sind, dass SieObjectOutputStream-Klasse.
ObjectInputStream wird hauptsächlich zum Lesen von Daten verwendet, die von ObjectOutputStream geschrieben wurden.
Grundsätzlich wandelt ObjectOutputStream Java-Objekte in die entsprechenden Ströme um. Dies wird als Serialisierung bezeichnet. Diese umgewandelten Ströme können in Dateien gespeichert oder über das Netzwerk übertragen werden.
Jetzt, wenn Sie diese Objekte lesen müssen, verwenden Sie ObjectInputStream, der den Strom in den entsprechenden Objekt zurückwandelt. Dies wird als Deserialisierung bezeichnet.
Um einen Objekt-Eingabestrom zu erstellen, müssen wir zunächst das Paket java.io.ObjectInputStream importieren. Nach dem Importieren des Pakets können wir den Eingabestrom erstellen.
//Erstellen Sie eine Dateieingabestromverbindung mit der angegebenen Datei. FileInputStream fileStream = new FileInputStream(String file); //Erstellen Sie einen Objekt-Eingabestrom aus einem Datei-Eingabestrom ObjectInputStream objStream = new ObjectInputStream(fileStream);
Im obigen Beispiel haben wir einen Objekt-Eingabestrom namens objStream erstellt, der mit dem Datei-Eingabestrom namens fileStream verbunden ist.
Jetzt kann objStream Objekte aus der Datei lesen.
Die Klasse ObjectInputStream bietet verschiedene Methodenimplementierungen, die in der Klasse InputStream existieren.
read() - Ein Byte von Daten aus dem Eingabestrom lesen
readBoolean() - Daten in Form von Booleschen Werten lesen
readChar() - Daten in Form von Zeichen lesen
readInt() - Daten in Form von Ganzzahlen lesen
readObject() - Objekte aus dem Eingabestrom lesen
Lassen Sie uns sehen, wie man mit der Klasse ObjectInputStream Objekte liest, die von der Klasse ObjectOutputStream erstellt wurden.
import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; class Main { public static void main(String[] args) { int data1 = 5; String data2 = "This is w3codebox"; try { FileOutputStream file = new FileOutputStream("file.txt"); ObjectOutputStream output = new ObjectOutputStream(file); //Verwenden Sie ObjectOutputStream, um in die Datei zu schreiben output.writeInt(data1); output.writeObject(data2); FileInputStream fileStream = new FileInputStream("file.txt"); //Erstellen Sie einen Objekt-Eingabestrom ObjectInputStream objStream = new ObjectInputStream(fileStream); //Verwenden Sie die Methode readInt() System.out.println("Ganzzahlendaten: " + objStream.readInt()); //Verwenden Sie die Methode readObject() System.out.println("Zeichenketten-Daten: " + objStream.readObject()); output.close(); objStream.close(); } catch (Exception e) { e.getStackTrace(); } } }
Ausgaberesultat
Ganzzahlendaten: 5 Zeichenketten-Daten: This is w3codebox
Im obigen Beispiel haben wir die Methoden readInt() und readObject() verwendet, um Ganzzahlendaten und Objektdaten aus der Datei zu lesen.
Hier verwenden wir ObjectOutputStream, um Daten in die Datei zu schreiben. Danach verwenden wir ObjectInputStream, um Daten aus der Datei zu lesen.
Lassen Sie uns einen anderen tatsächlichen Fall betrachten,
import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; class Dog implements Serializable { String name; String breed; public Dog(String name, String breed) { this.name = name; this.breed = breed; } } class Main { public static void main(String[] args) { //Erstellen eines Objekts der Klasse Dog Dog dog = new Dog("Tyson", "Labrador"); try { FileOutputStream file = new FileOutputStream("file.txt"); //Erstellen eines ObjectOutputStream ObjectOutputStream output = new ObjectOutputStream(file); //Objekt in den Ausgabestrom schreiben output.writeObject(dog); FileInputStream fileStream = new FileInputStream("file.txt"); //Erstellen eines ObjectInputStream ObjectInputStream input = new ObjectInputStream(fileStream); //Objekt lesen Dog newDog = (Dog) input.readObject(); System.out.println("Name des Hundes: " + newDog.name); System.out.println("Hunderasse: " + newDog.breed); output.close(); input.close(); } catch (Exception e) { e.getStackTrace(); } } }
Ausgaberesultat
Name des Hundes: Tyson Hunderasse: Labrador
In den obigen Beispielen haben wir erstellt
ObjectOutputStream verwendet den benannten Ausgabestrom file der FileOutputStream
ObjectInputStream verwendet den benannten Eingabestrom fileStream der FileInputStream
Das Objekt der Klasse Dog dog
Hier verwenden wir dann den ObjectOutputStream, um Objekte in die Datei zu schreiben. Und der ObjectInputStream liest Objekte aus der Datei.
Beachten Sie:Die Klasse Dog implementiert das Serializable Interface. Dies liegt daran, dass ObjectOutputStream nur serialisierbare Objekte in den Ausgabestrom schreibt.
Methode | Inhaltsbeschreibung |
---|---|
available() | Geben Sie die Anzahl der verfügbaren Bytes im Eingabestrom zurück |
mark() | Markieren Sie den Standort der gelesenen Daten im Eingabestrom |
reset() | Setzen Sie den Steuerelement zurück zum Punkt im Eingabestrom, an dem der Markierungsindicator gesetzt wurde |
skipBytes() | Springen Sie im Eingabestrom über die angegebenen Bytes und werfen Sie sie weg |
close() | Schließen Sie den Objekt-Eingabestrom |