Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 打开、关闭ObjectOutStream,但仍要将序列化对象追加到末尾?_Java_File Io - Fatal编程技术网

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的文件中。显然,你是对的