Java实现序列化与反序列化
序列化:把对象转换为字节序列的过程称为对象的序列化。
反序列化:把字节序列恢复为对象的过程称为对象的反序列化。
序列化的用途:对象一般是在程序运行过程中被创建的,所以只存在于内存中,序列化可以将对象永久的保存在磁盘上,通常保存为文件。
Java语言中使用对象输入ObjectInputStream/输出流ObjectOutputStream实现对象的序列化与反序列化
![39618168f38f486892c841f2633375bb.png](https://i-blog.csdnimg.cn/blog_migrate/a369a8046836fa8084c6cf409f0dc285.jpeg)
代码实现如下:
/**
* 实现Serializable接口的对象可以实现序列化和反序列化
*/
public class SerializeWukong implements Serializable {
private static final long serialVersionUID = 530529038334680084L;
private String name = "孙行者";
public String getName() {
return name;
}
/**
* 序列化
*/
public static void serialize() throws FileNotFoundException, IOException {
SerializeWukong wukong = new SerializeWukong();
//使用对象输出流ObjectOutputStream将对象保存到文件中
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(new File("wukong.txt")));
out.writeObject(wukong);
out.close();
}
/**
* 反序列化
* @throws ClassNotFoundException
*/
public static void deserialize() throws FileNotFoundException, IOException, ClassNotFoundException {
//使用对象输入流ObjectInputStream将文件中的对象读取到内存中
ObjectInputStream in = new ObjectInputStream(new FileInputStream(new File("wukong.txt")));
SerializeWukong wukong = (SerializeWukong)in.readObject();
in.close();
System.out.println(wukong.getName());
}
public static void main(String[] args) throws FileNotFoundException, IOException, ClassNotFoundException {
//serialize();
deserialize();
}
}