如何附加到现有的java.io.ObjectStream?
问题内容:
至于现在,我将java.io.StreamCorruptedException
在尝试附加对象时得到提示。我已经在互联网上搜索了一种解决方法。到目前为止,我发现的答案是无法完成。解决此问题的一种方法是将对象写入列表,然后将列表写入文件。
但是,每次添加新对象时,我都必须覆盖该文件。这似乎不是加班的最佳解决方案。
有没有一种方法可以将对象追加到现有对象流?
问题答案:
实际上,这很容易做到。当您添加到现有流时,需要使用ObjectOutStream的子类,该子类将重写,writeStreamHeader
以便在文件中间不写入第二个标头。例如
class NoHeaderObjectOutputStream extends ObjectOutputStream {
public NoHeaderObjectOutputStream(OutputStream os) {
super(os);
}
protected void writeStreamHeader() {}
}
然后,只需使用标准的ObjectInputStream即可读取整个文件。