我正在从 ObjectInputStream 读取数据,但我事先不知道对象的数量。因此,使用 EOF 异常捕获块来检测已到达文件的 END 并关闭文件。
这是一个好的/安全的编程习惯吗?
如果它不是一个好方法,可以以更好的方式完成吗?
我正在从 ObjectInputStream 读取数据,但我事先不知道对象的数量。因此,使用 EOF 异常捕获块来检测已到达文件的 END 并关闭文件。
这是一个好的/安全的编程习惯吗?
如果它不是一个好方法,可以以更好的方式完成吗?
是的,如果您以串行方式读取对象(以串行方式写入,即 o1、o2、o3)并且流中绝对没有其他信息。
有两种方法可以解决这个问题:
如果您通过网络发送对象流,它会有点麻烦,但话又说回来,您最好使用 RMI,而不是尝试手动编码。
你没有太多选择。当您用完对象时,ObjectInputStream.readObject() 会抛出 EOFException。除非您自己将 EOS 冗余编码到流中,否则您必须捕获 EOFException。
使用该available()
方法会成为您的替代方法吗?您可以依靠在 EoF 之前不返回零的流吗?