天天看点

序列化和反序列化

(一)序列化  objectoutputstream

1.序列化

把对象以数据流的形式存储在介质上的过程就是序列化,对象不会随着虚拟机或者程序退出而消失掉

2.结构

java.lang.object

  继承者 java.io.outputstream

      继承者 java.io.objectoutputstream

3.构造方法

new objectoutputstream(outputstream out) 

outputstream out : 使用的是字节流

new objectoutputstream(new fileoutputstream("e:/obj.txt"));

4.方法

writeobject(object obj) 将指定的对象写入 objectoutputstream

5.实际使用

(1)如果想序列化user类对象,那么user类必须实现"序列化接口(serializable)"

(2)给类生成一个指定的序列化版本id,如果这个类的内容发生了变化,不会影响反序列化

   private static final long serialversionuid = -4743372914435189725l;

(3)多个user对象写入arraylist集合中,再执行序列化,arraylist也实现了serializable接口

(二)反序列化  objectinputstream

1.反序列化

objectinputstream 对以前使用 objectoutputstream 写入的基本数据和对象进行反序列化

  继承者 java.io.inputstream

      继承者 java.io.objectinputstream

new objectinputstream(inputstream in)创建从指定 inputstream 读取的 objectinputstream。

inputstream in : 使用的是字节流

new objectinputstream(new fileinputstream("e:/obj.txt"));

readobject() 从 objectinputstream 读取对象==》返回 object

反序列化user类对象,如果user类(修改原有内容)新加个方法,那么反序列化时的序列号(版本号)跟之前序列化时的版本号对应不上,就无法反序列化

代码1:user类

代码2:单个user对象序列化

代码3:多个user对象写入集合中,再执行序列化

继续阅读