ObjectIntputStream中的read方法

ObjectIntputStream中的read方法

我输出了信息,但是报错

http://img1.sycdn.imooc.com//climg/5c68f64b0001b85216520242.jpg

查了看老师对别的同学的回答

http://img1.sycdn.imooc.com//climg/5c68f67100019bfd07430447.jpg

这个老师说在写入对象时,需要多添加一个空对象,这样在后面读取的时候,就会读到这个空的就不会报错了。

问题:为什么要多添加一个空对象,read方法不是会自己向下走来判断有没有走到文件末尾吗?(就像前面及几个类中的read方法一样)

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,readObject()是从ObjectInputStream流中读取对象,而其他的read方法是读取流中的内容。如果读取内容,可以使用fi1.read()!=-1来判断是否读取到末尾,但是readObject()对象时,需要WriteObject(null),在读取时,使用writer.readObject()!=null来判断是否读取到了末尾。

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

  • 乃好 提问者 #1
    好的,在添加多个内容后添加一个null对象,再使用writer.readObject()!=null循环读取输出对象就好了。那么如果有这样一种情况:写入了2个对象再写入一个null,用循环读取输出一下,这里没有问题,如果再添加一些对象,再要读取输出他们怎么做呢?矛盾点在于,之前已经加入了null对象,无法使用循环判断是否为null输入了呀
    2019-02-18 15:57:23
  • 好帮手慕阿满 回复 提问者 乃好 #2
    同学你好,这个WriteObject(null)是要写在最后,当写入所有的对象后,加上WriteObject(null)表示读到了末尾,如果后边还要写入,就不能加WriteObject(null)。祝:学习愉快~
    2019-02-18 17:22:31
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师