Java serialization and deserialization is a persistence mechanism for storing objects as a sequence of bytes. Serialization uses the java.io.Serializable interface and ObjectOutputStream to write objects to a file or network. Deserialization uses an ObjectInputStream to read a sequence of bytes from a file or network and reconstruct the original object. Serialization and deserialization are used in Java to persist objects, such as persisting user objects for later reloading.
An in-depth guide to Java serialization and deserialization
Introduction
Serialization refers to storing an object in a file or network as bytes so that it can be deserialized later and reconstruct the original object. Deserialization is the opposite, it converts data in bytes form into raw objects.
Serialization
In Java, objects can be serialized using the java.io.Serializable
interface. To serialize an object into a file, you can use ObjectOutputStream
:
// 创建一个对象要序列化的 FileOutputStream FileOutputStream fileOut = new FileOutputStream("object.ser"); // 使用 ObjectOutputStream 将对象写入文件中 ObjectOutputStream out = new ObjectOutputStream(fileOut); out.writeObject(myObject); // 关闭 ObjectOutputStream out.close();
Deserialization
To deserialize an object from a file, You can use ObjectInputStream
:
// 创建一个 FileInputStream 以读取序列化的文件 FileInputStream fileIn = new FileInputStream("object.ser"); // 使用 ObjectInputStream 从文件中读取对象 ObjectInputStream in = new ObjectInputStream(fileIn); MyObject myDeserializedObject = (MyObject) in.readObject(); // 关闭 ObjectInputStream in.close();
Practical case: Persistent user object
Assume we have a User
object, we It needs to be stored in a file for persistence. We can do this:
// 创建一个 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
Conclusion
Java serialization is a powerful mechanism for object persistence. Through the java.io.Serializable
interface and the ObjectOutputStream
and ObjectInputStream
classes we can easily serialize and deserialize objects.
The above is the detailed content of How to do java serialization and deserialization?. For more information, please follow other related articles on the PHP Chinese website!