Rumah  >  Artikel  >  Java  >  Bagaimanakah aliran Java I/O mengendalikan objek bersiri?

Bagaimanakah aliran Java I/O mengendalikan objek bersiri?

WBOY
WBOYasal
2024-04-13 13:18:01979semak imbas

Strim I/O Java boleh mensiri dan menyahsiri objek untuk penghantaran atau penyimpanan Langkah-langkah khusus adalah seperti berikut: membuat objek melaksanakan antara muka Serializable; gunakan ObjectInputStream untuk menyahsiri aliran bait ke dalam objek.

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

Java I/O Streaming Objek Bersiri

Pengenalan
Serialization ialah proses menukar objek kepada aliran bait supaya ia boleh dihantar melalui rangkaian atau peranti storan. Penyahserialisasian ialah proses terbalik, membina semula objek daripada aliran bait. Di Java, pensirilan dan penyahserikan dilakukan melalui aliran I/O.

Serializing Objects
Untuk mensirikan objek, kita perlu:

  1. Membuat objek melaksanakan antara muka Serializable.
  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 DoeGunakan ObjectOutputStream untuk menulis objek ke strim output. rrreee

🎜Deserialisasi Objek🎜🎜Untuk menyahsiri objek kita perlu: 🎜🎜🎜Membaca strim bait daripada strim input. 🎜Gunakan ObjectInputStream untuk menyahsiri strim bait menjadi objek. rrreee🎜🎜Kes praktikal🎜🎜Mari kita buat kelas Pelajar, jadikan ia boleh bersiri dan tunjukkan proses bersiri dan penyahsirilan:🎜rrreee🎜Menjalankan kod ini akan mengeluarkan: 1 John Doe, yang menunjukkan bahawa objek telah berjaya disiri dan dinyahsiri. 🎜

Atas ialah kandungan terperinci Bagaimanakah aliran Java I/O mengendalikan objek bersiri?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn