Java(对象序列化流和对象反序列化流)
一.序列化 & 反序列化
序列化:把对象以流的方式,写入(writeObject())到文件中保存,叫对象的序列化
反序列化:把文件中保存的对象,以流的方式读取(readObject())出来,叫对象的反序列化
序列化接口:要进行序列化和反序列化的类必须实现Serializable接口,以启用其序列化功能,给类一个标记
二.ObjectOutputStream
1.概念
java.io.ObjectOutputStream extends OutputStream
ObjectOutputStream:对象的
作用:把对象以流的方式,写入(writeObject())到文件中保存
2.构造方法
ObjectOutputStream(OutputStream out) 创建一个写入指定的OutputStream的ObjectOutputStream。
参数:
OutputStream out:字节输出流
3.特有的成员方法
void writeObject(Object obj) 将指定的对象写入ObjectOutputStream。
4.使用步骤
1.创建ObjectOutputStream对象,构造方法中传递字节输出流
2.使用ObjectOutputStream对象中的方法writeObject,把对象写入到文件中
3.释放资源
注意:类必须实现Serializable接口
三.ObjectInputStream
1.概念
java.io.ObjectInputStream extends InputStream
ObjectInputStream :对象的反序列化流
作用:把文件中保存的对象,以流的方式读取(readObject())出来
2.构造方法
ObjectInputStream(InputStream in) 创建从指定的InputStream读取的ObjectInputStream。
参数:
InputStream in:字节输入流
3.特有的成员方法
Object readObject() ;从ObjectInputStream读取一个对象。
4.使用步骤
1.创建ObjectInputStream对象,构造方法中传递字节输入出流
2.使用ObjectInputStream对象中的方法readObject,读取保存对象的文件
3.释放资源
4.使用读取出来的对象(打印)
注意:类必须实现Serializable接口
四.invalidClassException异常
解决:手动给类一个序列化标志:static final long seriaVersionUID = 42L;