序列化概念
- 序列化是指 把对象转换成有序字节流 ,以便在网络上传输或者保存在本地文件中。
- 序列化后的字节流保存了Java对象的状态以及相关的描述信息。
- 客户端从文件中或网络上获得序列化后的对象字节流后,根据字节流中所保存的对象状态及描述信息,通过反序列化重建对象。
序列化的核心和本质
- 序列化就是把实体对象状态按照一定的格式写入到有序字节流,反序列化就是从有序字节流重建对象,恢复对象状态。
- 序列化机制的核心作用就是对象状态的保存与重建。
序列化的用途
- 可以通过Socket将 数据发送的远程主机。
- 又或者保存的本地文件中以期后用。
什么时候需要序列化
- 当你想把的内存中的对象状态保存到一个文件中或者数据库中时候;
- 当你想用套接字在网络上传送对象的时候;
- 当你想通过RMI传输对象的时候(rmi要利用对象序列化运行远程主机上的服务,就像在本地机上运行对象时一样)。
如何实现序列化
-
步骤一:声明对象具有可序列化能力;
- 实现Serializable接口
import java.io.Serializable; class TestSerial implements Serializable { public byte version= 100; public byte count= 0; }
- 实现Externalizable接口
-
步骤二:通过Java API实现具体的序列化处理。
// 将Byte流暂时存储到temp.out文件里 public static void main(String args[]) throws IOException { FileOutputStream fos = new FileOutputStream("temp.out"); ObjectOutputStream oos = new ObjectOutputStream(fos); TestSerial ts = new TestSerial(); oos.writeObject(ts); oos.flush(); oos.close(); }
参考文章:
https://www.jianshu.com/p/edcf7bd2c085
https://blog.youkuaiyun.com/morethinkmoretry/article/details/5929345