打开、关闭ObjectOuptStream,但仍希望将序列化的对象追加到末尾



我必须打开一个ObjectOutputStream,然后写一个对象,最后关闭流。我使用以下代码多次这样做:

 // try-with-statement is very practical 
 try(FileOutputStream fos = new FileOutputStream("G.txt") ;
    ObjectOutputStream oos = new ObjectOutputStream(fos);){
    oos.writeObject(v);
} catch (IOException e) {
    e.printStackTrace();
}

但我想要的是附加在"G.txt"中序列化的对象?请问怎么做?我想不通?

您可以将FileOutputStream设置为第二次和后续写入的追加模式,但也必须将AppendingObjectOutputStream用于第二次及后续写入。你可以在网上找到这门课。它覆盖writeStreamHeader()以不执行任何操作。否则,当你加入时,你将在阅读时获得StreamCorruptedException: invalid type code AC

您可以使用FileOutputStream(String name, boolean append)构造函数。

最新更新