Java序列化与反序列化
介绍
Java序列化就是指把Java对象转换为字节序列的过程,反序列化就是指把字节序列恢复为Java对象的过程。
作用
序列化最重要的作用:在传递和保存对象时.保证对象的完整性和可传递性。对象转换为有序字节流,以便在网络上传输或者保存在本地文件中。
反序列化的最重要的作用:根据字节流中保存的对象状态及描述信息,通过反序列化重建对象。
总结:核心作用就是对象状态的保存和重建。(整个过程核心点就是字节流中所保存的对象状态及描述信息)
利用代码
首先创建一个Person类,保证其继承Serializable使其可以被进行序列化反序列化操作。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| package org.example;
import java.io.Serializable;
public class Person implements Serializable {
public String name; private int age; public Person(String name, int age){ this.name = name; this.age = age; }
}
|
序列化的过程。通过ObjectOutputStream创建ser.bin文件,并且通过writeObject将序列化的字节流写入ser.bin。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| package org.example;
import java.io.*;
public class serializeTest { public static void main(String[] args) throws IOException, ClassNotFoundException, NoSuchFieldException, IllegalAccessException {
Person person = new Person("aa",22); serialize(person);
} public static void serialize(Object obj) throws IOException{ ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("ser.bin")); oos.writeObject(obj); } }
|
反序列化的过程。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| package org.example;
import java.io.FileInputStream; import java.io.IOException; import java.io.ObjectInputStream;
public class UnserializeTest { public static Object unserialize(String Filename) throws IOException, ClassNotFoundException{ ObjectInputStream ois = new ObjectInputStream(new FileInputStream(Filename)); Object obj = ois.readObject(); System.out.println(obj); return obj; }
public static void main(String[] args) throws Exception{ Person person = (Person) unserialize("ser.bin"); System.out.println(person); } }
|
ser.bin内容
