In diesem Tutorial lernen wir anhand von Beispielen Java ObjectOutputStream und seine Methoden kennen.
Die ObjectInputStreamKlasse des java.ioPakets kann zum Lesen von Objekten verwendet werden, die zuvor von geschrieben wurden ObjectOutputStream.
Es erweitert die InputStreamabstrakte Klasse.

Bevor Sie sich mit der ObjectInputStreamKlasse vertraut machen, stellen Sie sicher, dass Sie sich mit der ObjectOutputStream-Klasse auskennen.
Funktionieren von ObjectInputStream
Das ObjectInputStreamwird hauptsächlich zum Lesen von Daten verwendet, die von der ObjectOutputStream.
Grundsätzlich ObjectOutputStreamkonvertiert das Java-Objekte in entsprechende Streams. Dies wird als Serialisierung bezeichnet. Diese konvertierten Streams können in Dateien gespeichert oder über Netzwerke übertragen werden.
Wenn wir nun diese Objekte lesen müssen, verwenden wir die ObjectInputStream, die die Streams zurück in entsprechende Objekte konvertieren. Dies ist als Deserialisierung bekannt.
Erstellen Sie einen ObjectInputStream
Um einen Objekteingabestream zu erstellen, müssen wir java.io.ObjectInputStreamzuerst das Paket importieren . Sobald wir das Paket importiert haben, können wir hier einen Eingabestream erstellen.
 // Creates a file input stream linked with the specified file FileInputStream fileStream = new FileInputStream(String file); // Creates an object input stream using the file input stream ObjectInputStream objStream = new ObjectInputStream(fileStream); 
Im obigen Beispiel haben wir einen Objekteingabestream mit dem Namen objStream erstellt, der mit dem Dateieingabestream mit dem Namen fileStream verknüpft ist.
Jetzt objStreamkann das verwendet werden, um Objekte aus der Datei zu lesen.
Methoden von ObjectInputStream
Die ObjectInputStreamKlasse bietet Implementierungen verschiedener in der InputStreamKlasse vorhandener Methoden .
read () Methode
read()- liest ein Datenbyte aus dem EingabestreamreadBoolean()- liest Daten in boolescher FormreadChar()- liest Daten in ZeichenformreadInt()- liest Daten in ganzzahliger FormreadObject()- liest das Objekt aus dem Eingabestream
Beispiel 1: Java ObjectInputStream
Mal sehen, wie wir die ObjectInputStreamKlasse verwenden können, um von der ObjectOutputStreamKlasse geschriebene Objekte zu lesen .
 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 programiz"; try ( FileOutputStream file = new FileOutputStream("file.txt"); ObjectOutputStream output = new ObjectOutputStream(file); // Writing to the file using ObjectOutputStream output.writeInt(data1); output.writeObject(data2); FileInputStream fileStream = new FileInputStream("file.txt"); // Creating an object input stream ObjectInputStream objStream = new ObjectInputStream(fileStream); //Using the readInt() method System.out.println("Integer data :" + objStream.readInt()); // Using the readObject() method System.out.println("String data: " + objStream.readObject()); output.close(); objStream.close(); ) catch (Exception e) ( e.getStackTrace(); ) ) ) 
Ausgabe
Integer-Daten: 5 String-Daten: Dies ist programiz
Im obigen Beispiel haben wir die Methode readInt()und readObject()verwendet, um ganzzahlige Daten und Objektdaten aus der Datei zu lesen.
Hier haben wir das verwendet ObjectOutputStream, um Daten in die Datei zu schreiben. Wir lesen dann die Daten aus der Datei mit dem ObjectInputStream.
Beispiel 2: Java ObjectInputStream
Sehen wir uns ein weiteres praktisches Beispiel an:
 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) ( // Creates an object of Dog class Dog dog = new Dog("Tyson", "Labrador"); try ( FileOutputStream file = new FileOutputStream("file.txt"); // Creates an ObjectOutputStream ObjectOutputStream output = new ObjectOutputStream(file); // Writes objects to the output stream output.writeObject(dog); FileInputStream fileStream = new FileInputStream("file.txt"); // Creates an ObjectInputStream ObjectInputStream input = new ObjectInputStream(fileStream); // Reads the objects Dog newDog = (Dog) input.readObject(); System.out.println("Dog Name: " + newDog.name); System.out.println("Dog Breed: " + newDog.breed); output.close(); input.close(); ) catch (Exception e) ( e.getStackTrace(); ) ) ) 
Ausgabe
Hundename: Tyson Hunderasse: Labrador
Im obigen Beispiel haben wir erstellt
ObjectOutputStreambenannte Ausgabe unter Verwendung derFileOutputStreambenannten DateiObjectInputStreambenannte Eingabe mit demFileInputStreambenannten fileStream- Ein Objekthund der Hundeklasse
 
Hier haben wir dann den Objektausgabestream verwendet, um das Objekt in die Datei zu schreiben. Und der Objekteingabestream zum Lesen des Objekts aus der Datei.
Hinweis : Die Dog-Klasse implementiert die SerializableSchnittstelle. Dies liegt daran, dass ObjectOutputStreamnur die serialisierbaren Objekte in den Ausgabestream geschrieben werden.
Andere Methoden von ObjectInputStream
| Methoden | Beschreibungen | 
|---|---|
available()  |  Gibt die verfügbare Anzahl von Bytes im Eingabestream zurück | 
mark()  |  markiert die Position im Eingabestream, bis zu der Daten gelesen wurden | 
reset()  |  Bringt das Steuerelement an den Punkt im Eingabestream zurück, an dem die Markierung gesetzt wurde | 
skipBytes()  |  Überspringt und verwirft die angegebenen Bytes aus dem Eingabestream | 
close()  |  Schließt den Objekteingabestream | 
Weitere Informationen finden Sie unter Java ObjectInputStream (offizielle Java-Dokumentation).








