Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> Java

Java ObjectOutputStream meistern: Serialisierung, Methoden und praktische Beispiele

Java ObjectOutputStream Klasse

Erkunden Sie die Java ObjectOutputStream API, ihre Kernmethoden und Schritt-für-Schritt-Beispiele, die demonstrieren, wie man Objekte in Dateien serialisiert und zurückliest.

Die ObjectOutputStream Klasse aus dem java.io Paket ermöglicht es Ihnen, Java-Objekte so zu schreiben, dass sie später von ObjectInputStream gelesen werden können. Sie erweitert OutputStream und ist das Rückgrat von Javas eingebautem Serialisierungsmechanismus.

Java ObjectOutputStream meistern: Serialisierung, Methoden und praktische Beispiele

Wie ObjectOutputStream funktioniert

Wenn Sie ein Objekt in einen ObjectOutputStream schreiben, kodiert das Framework den Klassennamen, Feldwerte und Typinformationen des Objekts in ein binäres Format – ein Prozess, der als Serialisierung bekannt ist. Der resultierende Byte-Stream kann in einer Datei gespeichert, über ein Netzwerk übertragen oder sogar im Speicher eingebettet werden.

Wichtig: Nur Objekte, die java.io.Serializable implementieren, können serialisiert werden. Dieses Interface fungiert als Marker, um der Laufzeit mitzuteilen, dass ein Objekt sicher persistiert oder übertragen werden kann.

ObjectOutputStream erstellen

Beginnen Sie mit dem Import der Klasse:

import java.io.ObjectOutputStream;

Verknüpfen Sie es dann mit einem FileOutputStream oder einem anderen zugrundeliegenden OutputStream:

// In Datei "data.bin" schreiben
FileOutputStream fileStream = new FileOutputStream("data.bin");
ObjectOutputStream objStream = new ObjectOutputStream(fileStream);

Hier ist objStream nun bereit, Objekte in fileStream zu serialisieren.

Wichtige Methoden von ObjectOutputStream

Die Klasse erbt eine Suite von Methoden von OutputStream und fügt spezialisierte für Objekt-Handling hinzu:

Beispiel 1: Serialisierung von Primitiven und String-Daten

Unten ist ein vollständiges Snippet, das einen int und einen String in eine Datei schreibt und sie dann mit ObjectInputStream zurückliest:

import java.io.*;

public class Main {
    public static void main(String[] args) {
        int data1 = 5;
        String data2 = "This is programiz";
        try {
            // Objekte schreiben
            FileOutputStream fos = new FileOutputStream("file.bin");
            ObjectOutputStream oos = new ObjectOutputStream(fos);
            oos.writeInt(data1);
            oos.writeObject(data2);
            oos.close();

            // Objekte lesen
            FileInputStream fis = new FileInputStream("file.bin");
            ObjectInputStream ois = new ObjectInputStream(fis);
            System.out.println("Integer data :" + ois.readInt());
            System.out.println("String data :" + ois.readObject());
            ois.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Ausgabe

Integer data :5
String data :This is programiz

Beispiel 2: Serialisierung eines benutzerdefinierten Objekts

Um eine benutzerdefinierte Klasse zu serialisieren, implementieren Sie einfach Serializable:

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 dog1 = new Dog("Tyson", "Labrador");
        try {
            // Objekt schreiben
            FileOutputStream fos = new FileOutputStream("dog.bin");
            ObjectOutputStream oos = new ObjectOutputStream(fos);
            oos.writeObject(dog1);
            oos.close();

            // Objekt lesen
            FileInputStream fis = new FileInputStream("dog.bin");
            ObjectInputStream ois = new ObjectInputStream(fis);
            Dog newDog = (Dog) ois.readObject();
            System.out.println("Dog Name: " + newDog.name);
            System.out.println("Dog Breed: " + newDog.breed);
            ois.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Ausgabe

Dog Name: Tyson
Dog Breed: Labrador

Die Dog Klasse muss Serializable implementieren, da ObjectOutputStream nur serialisierbare Objekte schreiben kann.

Weitere ObjectOutputStream Operationen

MethodeBeschreibung
flush()Leert alle gepufferten Ausgabebytes in den zugrundeliegenden Stream.
drain()Leert gepufferte Daten (verfügbar ab Java 9+).
close()Schließt den Stream und gibt alle Systemressourcen frei.

Für einen tieferen Einblick konsultieren Sie die offizielle Java-Dokumentation.

Java

  1. Javas final-Schlüsselwort verstehen: Variablen, Methoden und Klassen
  2. Java instanceof-Operator: Ein umfassender Leitfaden
  3. Java-Vererbung meistern: Konzepte, Typen und praktische Beispiele
  4. Java statische verschachtelte Klassen verstehen: Nutzung, Unterschiede und Beispiele
  5. Java anonyme innere Klassen meistern: Definition, Syntax und praktische Beispiele
  6. Java Singleton-Pattern erklärt: Sichere Implementierung und Verwendung
  7. Java Reflection meistern: Klassen, Methoden und Felder zur Laufzeit inspizieren
  8. Java ArrayList meistern: Operationen, Methoden und Best Practices
  9. Java Generics meistern – Wiederverwendbaren, typsicheren Code erstellen
  10. Java-Dateioperationen mit java.io meistern – Erstellen, Lesen, Schreiben & Löschen