Heim  >  Artikel  >  Java  >  Wie gehen Java-I/O-Streams mit serialisierten Objekten um?

Wie gehen Java-I/O-Streams mit serialisierten Objekten um?

WBOY
WBOYOriginal
2024-04-13 13:18:01927Durchsuche

Java-E/A-Streams können Objekte zur Übertragung oder Speicherung serialisieren. Die spezifischen Schritte lauten wie folgt: Verwenden Sie ObjectOutputStream, um das Objekt in den Ausgabestream zu serialisieren. Verwenden Sie ObjectInputStream, um einen Bytestream in ein Objekt zu deserialisieren.

Java I/O流如何处理序列化对象?

Java I/O Streaming Serialized Objects

Einführung
Serialisierung ist der Prozess der Konvertierung eines Objekts in einen Bytestrom, damit es über ein Netzwerk, ein Speichergerät oder einen Speicher übertragen werden kann. Deserialisierung ist der umgekehrte Prozess, bei dem ein Objekt aus einem Bytestrom rekonstruiert wird. In Java erfolgt die Serialisierung und Deserialisierung über I/O-Streams.

Serialisieren von Objekten
Um ein Objekt zu serialisieren, müssen wir:

  1. Das Objekt dazu bringen, die Schnittstelle Serializable zu implementieren.
  2. Serializable 接口。
  3. 使用 ObjectOutputStream 将对象写入到输出流中。
// 序列化一个对象
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("object.ser"));
oos.writeObject(object);
oos.close();

反序列化对象
要反序列化一个对象,我们需要:

  1. 从输入流中读取字节流。
  2. 使用 ObjectInputStream 将字节流反序列化成对象。
// 反序列化一个对象
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("object.ser"));
Object object = ois.readObject();
ois.close();

实战案例
让我们创建一个 Student 类,使其可序列化并演示序列化和反序列化过程:

import java.io.Serializable;

public class Student implements Serializable {
    private int id;
    private String name;

    // 构造函数和 getter/setter 略...
}

public class Main {
    public static void main(String[] args) {
        // 创建一个 Student 对象
        Student student = new Student(1, "John Doe");

        // 序列化该对象
        try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("student.ser"))) {
            oos.writeObject(student);
        } catch (IOException e) {
            e.printStackTrace();
        }

        // 反序列化该对象
        try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream("student.ser"))) {
            Student deserializedStudent = (Student) ois.readObject();
            System.out.println(deserializedStudent.getId() + " " + deserializedStudent.getName());
        } catch (IOException | ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
}

运行此代码将输出:1 John DoeVerwenden Sie ObjectOutputStream, um Objekte in den Ausgabestream zu schreiben. rrreee

🎜Objekte deserialisieren🎜🎜Um ein Objekt zu deserialisieren, müssen wir: 🎜🎜🎜den Bytestream aus dem Eingabestream lesen. 🎜Verwenden Sie ObjectInputStream, um den Bytestream in ein Objekt zu deserialisieren. rrreee🎜🎜Praktischer Fall🎜🎜Lassen Sie uns eine Student-Klasse erstellen, sie serialisierbar machen und den Serialisierungs- und Deserialisierungsprozess demonstrieren:🎜rrreee🎜Beim Ausführen dieses Codes wird Folgendes ausgegeben: 1 John Doe, was anzeigt, dass das Objekt erfolgreich serialisiert und deserialisiert wurde. 🎜

Das obige ist der detaillierte Inhalt vonWie gehen Java-I/O-Streams mit serialisierten Objekten um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn