Java 打开、关闭ObjectOutStream,但仍要将序列化对象追加到末尾?
我必须打开一个Java 打开、关闭ObjectOutStream,但仍要将序列化对象追加到末尾?,java,file-io,Java,File Io,我必须打开一个ObjectOutputStream,然后编写一个对象,最后关闭流。我使用以下代码多次这样做: // try-with-statement is very practical try(FileOutputStream fos = new FileOutputStream("G.txt") ; ObjectOutputStream oos = new ObjectOutputStream(fos);){ oos.writeObject(v); } catch
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(字符串名称,布尔追加)
构造函数。对于第二次和后续写入,您可以将FileOutputStream
置于追加模式,但是对于第二次和后续写入,您还必须使用appendingObjectOutstream
。你可以在网上找到这门课。它重写writeStreamHeader()
而不执行任何操作。否则,当你加入时,你会得到一份关于阅读的报告 不,不是。这将足以附加数据,但当您到达连接时,它将抛出一个on读取。不建议多次打开关闭OOS或OIS?@OSryx它不起作用。点击链接,看看原因。可以克服此问题,但最好不要首先引发此问题。如果要附加到文件,可以将ObjectOutputStream子类化,并重写writeStreamHeader
方法以执行reset()
。然后选择用例上禁止的ObjectOutputStream(追加时,使用子类OOS;不追加时,使用子类OOS)。序列化数据不是文本:它是二进制的。不要将其保存在扩展名为.txt的文件中。显然,你是对的