使用EOF异常来检测文件结尾是否是一种好的做法



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

  • 这是一个好的/安全的编程实践吗?

  • 如果这不是一个好的方法,可以用更好的方式来做吗?

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

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

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

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

如果你在网络上发送对象流,它会有点麻烦,但话说回来,你最好使用RMI,而不是尝试手动编码。

使用available()方法对您来说是一种替代方法吗?你能指望流在EoF之前不返回零吗?

相关内容

  • 没有找到相关文章

最新更新