IO流之对象输入输出流的序列化和反序列化

今天,我看到IO对象输入输出流序列化和反序列的时候,遇到了一点问题,现在把它记录下来。

序列化,类似于存档,也就是把对象写到文档上面去。

反序列化,类似于读档,也就是把对象从文档上读出来。

ObjectOutputStream序列化

我们先写一个Person类

在写这个Person类的时候,需要注意一定要实现Serializable这个接口

如果不实现这个接口,在下面序列化的过程中,就会报错

这个接口里面没有方法,实现这个接口的目的是为了说明这个类是可以被序列化的

接下来,我们进行序列化

在主方法里序列化这两个对象

接着我们保存运行一下,看看c.txt

发现文档里面是一堆看不懂的乱码,没关系,我们只需要能正常读出来就可以了

ObjectInputStream反序列化

然后我们就可以进行反序列化,读出刚刚的文档里面对象啦

注意注意,如果刚刚我们在Person类里面没有重写toString方法,那么我们在输出p1和p2的时候,就会打印对象的内存地址,此时可以用get方法进行获取打印

另外还有一个注意点,要进行Person的强转!!!输出的是Object对象!!!

升级

如果对象比较少的情况下,使用上面的方法还是很方便的,但是如果对象多,那么你反序列化一次就写一行代码,就很不方便,而且还需要记住一共存入了多少个对象。下面的方法,是把读到的对象全部存在list集合中,然后将对象一次全部写出即可

OK,这篇文章红色标注的都是易错点注意点,有错误欢迎评论指出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值