一. 序列化与反序列化的含义:
1、Java序列化是指把Java对象转换为字节序列的过程;
2、Java反序列化是指把字节序列恢复为Java对象的过程
二. 序列化与反序列化的目的:
将Java 对象变成二进制字节,以便在两个进程中通信或传输,提高通信效率,实现数据的持久化
三.JDK 中序列化相关的类:
1. java.io.ObjectOutputStream:表示对象输出流
它的writeObject(Object obj)方法可以对参数指定的obj对象进行序列化,把得到的字节序列写到一个目标输出流中。
2.java.io.ObjectInputStream:表示对象输入流
它的readObject()方法源输入流中读取字节序列,再把它们反序列化成为一个对象,并将其返回。
只有实现了Serializable或Externalizable接口的类的对象才能被序列化,否则抛出异常
四.在JDK类库中序列化的步骤:
1.创建一个对象输出流,它可以包装一个其它类型的目标输出流,如文件输出流:
ObjectOutputStream out = new ObjectOutputStream(new fileOutputStream(“D:\\objectfile.obj”));
2.通过对象输出流的writeObject()方法写对象:
out.writeObject(“Hello”);
out.writeObject(new Date());
五.JDK类库中反序列化的步骤
1.创建一个对象输入流,它可以包装一个其它类型输入流,如文件输入流:
ObjectInputStream in = new ObjectInputStream(new fileInputStream(“D:\\objectfile.obj”));
2.通过对象输出流的readObject()方法读取对象:
String obj1 = (String)in.readObject();
Date obj2 = (Date)in.readObject();
注意:为了正确读取数据,完成反序列化,必须保证向对象输出流写对象的顺序与从对象输入流中读对象的顺序一致。