(一)序列化 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对象写入集合中,再执行序列化