我有我需要记录序列化对象的文件。我打开ObjectOutputStream
以便在文件中写入。如果我没有在文件中写任何东西,文件内容就会被删除。我不想在制作ObjectOutputStream
时删除内容。
我的代码(我使用Guice),
@Provides
@ArticleSerializationOutputStream
public ObjectOutputStream getArticleObjectOutputStream(Config config) {
ObjectOutputStream out = null;
String fileName = config.getConfigValue(ARTICLE_SNAPSHOT);
try {
out = new ObjectOutputStream(new FileOutputStream(new File(fileName)));
} catch (IOException e) {
String errorMessage = String.format(IO_EXCEPTION_PROBLEM, fileName);
addError(errorMessage);
}
return out;
}
发布于 2009-07-03 07:48:11
创建ObjectOutputStream
本身不会覆盖任何内容。我怀疑你刚刚创建了一个新的FileOutputStream
,它将截断任何当前的内容,除非你告诉它追加。我认为你想要:
FileOutputStream fos = new FileOutputStream(filename, true);
使其附加到文件中,而不是覆盖。
编辑:是的,根据您的编辑,您正在创建一个新的FileOutputStream
,但没有告诉它追加。因此它会覆盖该文件。
发布于 2009-07-05 14:13:37
我解决了这个问题。我使用provider而不是在begin with Guice中实例化OutputStrams。
@Inject @ArticleOutputStream
Provider<OutputStream> articleObjectOutputStream;
articleOutputStream.get();
现在可以正常工作了。
https://stackoverflow.com/questions/1078232
复制相似问题