当前位置: 首页 > 图灵资讯 > 技术篇> 如何进行java序列化和反序列化?

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

来源:图灵教育
时间:2024-04-15 13:29:42

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 类,我们可以很容易地序列化和反序列化对象。

以上是如何进行java序列化和反序列化?详情请关注图灵教育其他相关文章!