In diesem Tutorial lernen wir anhand von Beispielen Java ObjectOutputStream und seine Methoden kennen.
Die ObjectInputStream
Klasse des java.io
Pakets kann zum Lesen von Objekten verwendet werden, die zuvor von geschrieben wurden ObjectOutputStream
.
Es erweitert die InputStream
abstrakte Klasse.
Bevor Sie sich mit der ObjectInputStream
Klasse vertraut machen, stellen Sie sicher, dass Sie sich mit der ObjectOutputStream-Klasse auskennen.
Funktionieren von ObjectInputStream
Das ObjectInputStream
wird hauptsächlich zum Lesen von Daten verwendet, die von der ObjectOutputStream
.
Grundsätzlich ObjectOutputStream
konvertiert 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.ObjectInputStream
zuerst 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 objStream
kann das verwendet werden, um Objekte aus der Datei zu lesen.
Methoden von ObjectInputStream
Die ObjectInputStream
Klasse bietet Implementierungen verschiedener in der InputStream
Klasse 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 ObjectInputStream
Klasse verwenden können, um von der ObjectOutputStream
Klasse 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
ObjectOutputStream
benannte Ausgabe unter Verwendung derFileOutputStream
benannten DateiObjectInputStream
benannte Eingabe mit demFileInputStream
benannten 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 Serializable
Schnittstelle. Dies liegt daran, dass ObjectOutputStream
nur 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).