对象的反序列化 ObjectInputstream类

 创建反序列化对象

调用里面的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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值