这是一个好习惯 - 使用EOF异常来检测文件结尾

时间:2011-06-29 17:18:40

标签: java serialization objectinputstream

我正在从ObjectInputStream中读取,我事先并不知道对象的数量。因此,使用EOF异常catch块来检测已到达文件的END并关闭文件。

  • 这是一个好的/安全的编程习惯吗?

  • 如果它不是一个好的方法,可以用更好的方式完成吗?

3 个答案:

答案 0 :(得分:1)

是的,如果您以串行方式读取对象(以串行方式写入,即o1,o2,o3),则流中绝对没有其他信息。

有两种方法可以解决这个问题:

  • 通过将列表写入包含元素的文件,然后使客户端读取单个对象,列表
  • 在流的开头写一个int,表示客户可以期待的对象数

如果您通过网络发送对象流,它会有点毛茸茸,但是再次,您最好使用RMI而不是尝试手动编码。

答案 1 :(得分:1)

你没有太多选择。当对象用完时,ObjectInputStream.readObject()会抛出EOFException。除非你自己将EOS冗余编码到流中,否则你必须捕获EOFException。

答案 2 :(得分:0)

使用available()方法可以替代吗?你可以依靠EoF之前没有返回零的流吗?