序列化流
序列化流:把对象按照流一样的方式存入文本文件或者在网络中传输。对象 – 流
ObjectOutputStream
反序列化流:把文本文件中的流对象数据或者网络中的流对象还原成对象。流数据– 对象
ObjectInputStream
序列化操作问题
为什么要实现序列化?
如何实现序列化?
序列化数据后,再次修改类文件,读取数据会出问题,如何解决呢?
使用transient关键字声明不需要序列化的成员变量
序列化的作用:
将对象写到文件
在网络中传输
例子1:
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
public classObjectStreamDemo {
public static void main(String[] args) throws IOException,ClassNotFoundException {
// TODO Auto-generated method stub
//序列化数据其实就是把对象写到文本文件中
write();
//反序列化
read();
}
private static void read() throws IOException,IOException, ClassNotFoundException {
// TODO Auto-generated method stub
//创建反序列化对象
ObjectInputStreamois = newObjectInputStream(new FileInputStream("a.txt"));
//还原对象
Objectobj = ois.readObject();
//释放资源
ois.close();
//输出对象
System.out.println(obj);
}
private static void write() throws IOException {
// TODO Auto-generated method stub
//创建序列化对象
ObjectOutputStreamoos = newObjectOutputStream(new FileOutputStream("a.txt"));
//创建对象
Personp= newPerson("林青霞",27);
//public final void writeObject(Object obj)
oos.writeObject(p);
//释放资源
oos.close();
}
}
运行结果:
Person [name=林青霞, ag=27]