序列化: 写对象,把对象以流的方法写入到文件中
反序列化:读对象把文件中保存的对象,以流的方式读取出来
序列化和反序列化时,会抛出NotSerializableException没有序列化异常
类通过实现java.io.Serializable接口以启用其序列化功能。未实现接口的类将无法使其任何状态序列化或反序列化。
Serializable接口也叫标记型接口,要进行序列化和反序列化的类必须实现Serializable接口,就会给类添加一个标记,当我们进行序列化和反序列化时,就会检测类上是否有这个标记
ObjectOutputStream: 对象的序列化流
继承了OutputStream
构造方法:
ObjectOutputStream(OutputStream out):创建写入指定OutputStream的ObjectOutputStream。
out:字节输出流
特有的成员方法:
void writeObject(Object obj):将指定的对象写入ObjectOutputStream
使用方法:
1、创建ObjectOutputStream对象,构造方法中传递字节输出流
2、使用ObjectOutputStream对象中的方法writeObject,把对象写入到文件中
3、释放资源
ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream("d:\\person.txt"));
oos.writeObject(new person(1,"a"));
oos.close();
ObjectInputStream: 对象的反序列化流
作用:把文件中保存的对象,以流的方式读取出来使用
构造方法:
ObjectInputStream(InputStream in) : 创建从指定InputStream读取的ObjectInputStream
in:字节输入流
特有的成员方法:
Object readObject()从ObjectInputStream读取对象
使用步骤:
1、创建ObjectInputStream对象,构造方法中传递字节输入流
2、使用ObjectInputStream对象中方法readObject读取保存对象的文件
3、释放资源
4、使用读取出来的对象
readObject方法声明抛出了ClassNotFoundException(class文件找不到异常)
当不存在对象的class文件时抛出了异常