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

发布于 2022-09-02 11:31:42 字数 427 浏览 16 评论 0

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

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

目前暂时有2个想法:

  1. 定义一个变量用来存储序列化对象的个数,读取时使用这个变量来作为反序列化的条件。

  2. 捕获EOFException

以上2种方法是否可靠,不知道有没有更好的实现能代替以上2种方法,或者使用其他方法实现反序列化。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

小清晰的声音 2022-09-09 11:31:42

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文