这是我的代码:
{{1}}
如何让它从循环中退出而不是直接进入EOFException,当它到达最后一个对象时?求救!
答案 0 :(得分:1)
这是这个问题的重复:
Java FileInputStream ObjectInputStream reaches end of file EOF
底线是ObjectInputStream在到达流的末尾时不返回null。相反,底层的FileInputStream会抛出EOFException。虽然您可以将其解释为文件末尾,但它不允许您区分截断的文件。所以,实际上,ObjectInputStream希望你知道你将要读取多少个对象。
要解决此问题,您可以将整数写入文件的开头,以指示文件中有多少个UserRegistration对象。读取该值,然后使用for循环读取那么多对象。
或者,您可以将UserRegistration对象序列化为数组或其他容器,然后对整个数组/容器进行反序列化。