【发布时间】:2014-09-22 10:31:09
【问题描述】:
在过去 2 周内,我在同一个文件中写入了多个对象。每次(可能是百万次)我都会调用:
try(ObjectOutputStream output=new ObjectOutputStream(new FileOutputStream(new File("somefile"),true))) {
output.writeObject(someobject);
output.close();
}
现在当我尝试使用以下方法阅读它时:
try(ObjectInputStream input=new ObjectInputStream(new FileInputStream(new File("somefile")))) {
while(true) {
PROCESS_IT(input.readObject());
}
}
它只读取第一个对象并给出错误:
java.io.StreamCorruptedException: invalid type code: AC
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1379)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:371)
我现在知道我应该在编写这些对象时覆盖流标头 (Appending to an ObjectOutputStream)
但我花了 两周 才得到这个“somefile”中的结果。 我可以通过跳过损坏的字节/标头以某种方式读取所有对象吗? 请指教。谢谢
【问题讨论】:
标签: java objectinputstream objectoutputstream