Java ObjectInputStream meistern: Umfassender Leitfaden
Java ObjectInputStream Klasse
Erkunden Sie, wie Sie serialisierte Objekte in Java mit ObjectInputStream lesen, komplett mit Schritt-für-Schritt-Beispielen und praktischen Tipps.
Die ObjectInputStream Klasse im java.io Paket ermöglicht es Ihnen, Objekte zu deserialisieren, die zuvor von ObjectOutputStream geschrieben wurden. Sie erweitert die abstrakte InputStream Klasse.
Bevor Sie in ObjectInputStream eintauchen, stellen Sie sicher, dass Sie mit der ObjectOutputStream Klasse vertraut sind, da diese den Serialisierungsprozess handhabt.
Wie ObjectInputStream funktioniert
Serialisierung transformiert Java-Objekte in einen Byte-Stream, der gespeichert oder übertragen werden kann. Deserialisierung – der umgekehrte Prozess – wird von ObjectInputStream gehandhabt, der den Byte-Stream liest und die ursprünglichen Objekte rekonstruiert.
ObjectInputStream erstellen
Um einen ObjectInputStream zu erstellen, importieren Sie zuerst die Klasse und verknüpfen Sie sie dann mit einer Quelle, typischerweise einem FileInputStream:
// Mit Datei verknüpfen
FileInputStream fileStream = new FileInputStream("beispiel.dat");
// In ObjectInputStream wrappen
ObjectInputStream objStream = new ObjectInputStream(fileStream);
Einmal instanziiert, kann objStream beliebige serialisierte Objekte aus der Datei lesen.
Wichtige Methoden von ObjectInputStream
Nachfolgend sind die am häufigsten verwendeten Methoden aufgeführt:
read()– Liest ein einzelnes Byte.readBoolean()– Liest einen Boolean-Wert.readChar()– Liest ein Character.readInt()– Liest einen Integer.readObject()– Rekonstruiert ein Objekt aus dem Stream.
Beispiel 1: Grundlegende Deserialisierung
Unten ist ein minimales Beispiel, das einen Integer und einen String in eine Datei schreibt und sie dann zurückliest.
import java.io.*;
public class Main {
public static void main(String[] args) {
int data1 = 5;
String data2 = "This is programiz";
try {
// Daten schreiben
FileOutputStream fos = new FileOutputStream("file.txt");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeInt(data1);
oos.writeObject(data2);
// Daten lesen
FileInputStream fis = new FileInputStream("file.txt");
ObjectInputStream ois = new ObjectInputStream(fis);
System.out.println("Integer data :" + ois.readInt());
System.out.println("String data :" + ois.readObject());
oos.close();
ois.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
Ausgabe
Integer data :5 String data :This is programiz
Beispiel 2: Deserialisierung eines benutzerdefinierten Objekts
Serialisieren und deserialisieren Sie ein einfaches Dog Objekt. Denken Sie daran, die Klasse muss Serializable implementieren, damit dies funktioniert.
import java.io.*;
class Dog implements Serializable {
String name;
String breed;
Dog(String name, String breed) {
this.name = name;
this.breed = breed;
}
}
public class Main {
public static void main(String[] args) {
Dog dog = new Dog("Tyson", "Labrador");
try {
// Serialisieren
FileOutputStream fos = new FileOutputStream("file.txt");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(dog);
// Deserialisieren
FileInputStream fis = new FileInputStream("file.txt");
ObjectInputStream ois = new ObjectInputStream(fis);
Dog newDog = (Dog) ois.readObject();
System.out.println("Dog Name: " + newDog.name);
System.out.println("Dog Breed: " + newDog.breed);
oos.close();
ois.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
Ausgabe
Dog Name: Tyson Dog Breed: Labrador
Wichtige Erkenntnisse:
- Verwenden Sie
ObjectOutputStream, um Objekte zu schreiben. - Verwenden Sie
ObjectInputStream, um sie zurückzulesen. - Nur Objekte, die
Serializableimplementieren, können serialisiert werden.
Weitere ObjectInputStream Methoden
| Methode | Beschreibung |
|---|---|
available() | Gibt die Anzahl der Bytes zurück, die ohne Blockieren gelesen werden können. |
mark() | Markiert die aktuelle Position im Stream. |
reset() | Setzt den Stream auf die letzte Markierung zurück. |
skipBytes(int n) | Überspringt n Bytes. |
close() | Schließt den Stream und gibt Ressourcen frei. |
Für tiefere Einblicke besuchen Sie die offizielle Java-Dokumentation.
Java
- Javas final-Schlüsselwort verstehen: Variablen, Methoden und Klassen
- Java instanceof-Operator: Ein umfassender Leitfaden
- Java-Vererbung meistern: Konzepte, Typen und praktische Beispiele
- Java statische verschachtelte Klassen verstehen: Nutzung, Unterschiede und Beispiele
- Java anonyme innere Klassen meistern: Definition, Syntax und praktische Beispiele
- Java Singleton-Pattern erklärt: Sichere Implementierung und Verwendung
- Java Reflection meistern: Klassen, Methoden und Felder zur Laufzeit inspizieren
- Java ObjectOutputStream meistern: Serialisierung, Methoden und praktische Beispiele
- Java Generics meistern – Wiederverwendbaren, typsicheren Code erstellen
- Java-Dateioperationen mit java.io meistern – Erstellen, Lesen, Schreiben & Löschen