创建反序列化对象
调用里面的readObject()方法
import java.io.*;
public class FuXi3 {
public static void main(String[] args) throws IOException, ClassNotFoundException {
demo02();
demo01();
}
private static void demo02() throws IOException {
ObjectOutputStream a = new ObjectOutputStream(new FileOutputStream("C:\\Users\\shanyang\\Desktop\\q6w.txt"));//对象流序列化写入到硬盘的位置
a.writeObject(new FuXi4("试试",18));//调用此类的方法写入对象流 | 就是写入对象
a.close();//释放资源
//注意对象的类一定要实现Serializable接口 否则运行报错 Serializable接口是一个标记型接口进行序列化和反序列化时对象类必须实现此类才可以进行操作
}
private static void demo01() throws IOException, ClassNotFoundException {//readObject抛出了 ClassNotFoundException异常,当此文件不存在对象时抛出此异常
ObjectInputStream a = new ObjectInputStream(new FileInputStream("C:\\Users\\shanyang\\Desktop\\q6w.txt"));//创建反序列化流类的对象指定FileInputStream类型对象
Object o = a.readObject();//获取指定对象里的对象流//注意对象流的类必须实现Serializable
a.close();
FuXi4 o1 = (FuXi4) o;//向下转型
System.out.println(o1.getName()+o1.getAge());
}
}
另外如果不想让对象里面的某个变量序列化的话可以在数据类型前添加一个关键字transient 此关键字表示序列化流此对象类的话 此变量的值不会被写到文件里面
System.out.println(o1.getName()+o1.getAge());//原本结果试试18 修饰后试试0 对象类的age被transient修饰了所以获取不到他的值 自动赋予一个默认值0