开发者社区> 问答> 正文

反序列化时如何判断是否已经读到末尾?

将一组对象序列化到文件中,然后将这些对象用readObject()方法读取出来,如果使用一个while循环来判断对象不为空的方式读取,最后会因为读取到文件末尾继续读取抛出一个EOFExcetion

Object obj = null;
while(null != (obj = ois.readObject()))
{
    ...
}

目前暂时有2个想法:
1.定义一个变量用来存储序列化对象的个数,读取时使用这个变量来作为反序列化的条件。
2.捕获EOFException。
以上2种方法是否可靠,不知道有没有更好的实现能代替以上2种方法,或者使用其他方法实现反序列化。

展开
收起
蛮大人123 2016-03-11 18:29:47 2284 0
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    建议使用第一种方法,因为序列化本身也都是采用这种方法来实现的,即对于可变长度的变量,都保存一个长度用来读取,这样能有效提高数据的准确性和运行的效率。

    2019-07-17 18:59:50
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载