首页 > 文章列表 > 如何进行java序列化和反序列化?

如何进行java序列化和反序列化?

java 序列化
308 2024-04-23

Java 序列化和反序列化是一种持久化机制,用于将对象存储为字节序列。序列化使用 java.io.Serializable 接口和 ObjectOutputStream,将对象写入文件或网络。反序列化使用 ObjectInputStream,从文件中或网络中读取字节序列并重建原始对象。序列化和反序列化在 Java 中用于持久化对象,例如持久化用户对象以便以后重新加载。

如何进行java序列化和反序列化?

Java 序列化和反序列化的深入指南

简介

序列化是指将对象以字节形式存储在文件中或网络中,以便以后可以进行反序列化并重建原始对象。反序列化与之相反,它将字节形式的数据转换为原始对象。

序列化

在 Java 中,可以使用 java.io.Serializable 接口对对象进行序列化。要将对象序列化到文件中,可以使用 ObjectOutputStream

// 创建一个对象要序列化的 FileOutputStream
FileOutputStream fileOut = new FileOutputStream("object.ser");

// 使用 ObjectOutputStream 将对象写入文件中
ObjectOutputStream out = new ObjectOutputStream(fileOut);
out.writeObject(myObject);

// 关闭 ObjectOutputStream
out.close();

反序列化

要从文件中反序列化对象,可以使用 ObjectInputStream

// 创建一个 FileInputStream 以读取序列化的文件
FileInputStream fileIn = new FileInputStream("object.ser");

// 使用 ObjectInputStream 从文件中读取对象
ObjectInputStream in = new ObjectInputStream(fileIn);
MyObject myDeserializedObject = (MyObject) in.readObject();

// 关闭 ObjectInputStream
in.close();

实战案例:持久化用户对象

假设我们有一个 User 对象,我们需要将其存储在文件中以进行持久化处理。我们可以这样做:

// 创建一个 User 对象
User user = new User("John", "Doe");

// 将 User 对象序列化到文件中
FileOutputStream fileOut = new FileOutputStream("user.ser");
ObjectOutputStream out = new ObjectOutputStream(fileOut);
out.writeObject(user);
out.close();

// 从文件中反序列化 User 对象
FileInputStream fileIn = new FileInputStream("user.ser");
ObjectInputStream in = new ObjectInputStream(fileIn);
User deserializedUser = (User) in.readObject();
in.close();

// 确认反序列化的 User 对象
System.out.println(deserializedUser.getName() + " " + deserializedUser.getLastName()); // 打印:John Doe

结论

Java 序列化是用于对象持久化的强大机制。通过 java.io.Serializable 接口和 ObjectOutputStreamObjectInputStream 类,我们可以轻松地序列化和反序列化对象。