JAVA objectinputstream无法从循环中退出

时间:2017-10-18 16:12:50

标签: java objectinputstream eofexception

这是我的代码:

{{1}}

如何让它从循环中退出而不是直接进入EOFException,当它到达最后一个对象时?求救!

1 个答案:

答案 0 :(得分:1)

这是这个问题的重复:

Java FileInputStream ObjectInputStream reaches end of file EOF

底线是ObjectInputStream在到达流的末尾时不返回null。相反,底层的FileInputStream会抛出EOFException。虽然您可以将其解释为文件末尾,但它不允许您区分截断的文件。所以,实际上,ObjectInputStream希望你知道你将要读取多少个对象。

要解决此问题,您可以整数写入文件的开头,以指示文件中有多少个UserRegistration对象。读取该值,然后使用for循环读取那么多对象。

或者,您可以将UserRegistration对象序列化为数组或其他容器,然后对整个数组/容器进行反序列化。