【发布时间】:2010-12-09 05:39:03
【问题描述】:
是否可以将 ObjectOutputStream/ObjectInputStream 设为内部类?我可以写好,并检查创建的文件,但是当我尝试使用 ObjectInputStream 读回它时,我得到一个 EOFException,只是试图读取一个 Object o = oos.readObject();
- 我使用同一个 File 对象打开两个流,所以这不是问题。
- 它似乎与内部类的性质无关 - 只有一个公共 int 的类与更复杂的类一样失败。
我必须继续前进,创建一个常规类,并在发送者类中实例化,但我讨厌在不知道这是否可能的情况下走开,如果不知道为什么不这样做。
更新:导致问题的相关问题:
A.您无法重新打开使用 ObjectOutputStream 写入的文件并追加:写入第二个标头并损坏文件。
B.使用 ByteOutputStream 序列化 HashMap 以执行哈希摘要是行不通的,因为当您从 ObjectOutputStream 文件中读回 HashMap 时,您很可能会从 ByteOutputStream 获得不同的 byte[],因为成对顺序的变化:内容是相同,但 byte[](以及哈希摘要)不是。
希望这可以帮助某人节省一些时间。
【问题讨论】:
-
内部类是什么意思? (如果你的意思是内部类,那么是的,你可以将它们序列化,但规范告诉你不要这样做。)
-
你能提供任何细节吗?在哪里,为什么?谢谢。
标签: java io objectinputstream eofexception