JAVA OutputStream删除文件内容
我有需要记录序列化对象的文件。 我打开 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;
}
I have files in who I need to record serialized object. I open ObjectOutputStream
for writing in files. If I didn't wrote nothing in file, file content get deleted. I don't want content to be deleted when I make ObjectOutputStream
.
My code (I use 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;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
创建
ObjectOutputStream
本身不会覆盖任何内容。 我怀疑您刚刚创建了一个新的 FileOutputStream ,除非您告诉它附加,否则它将截断任何当前内容。 我想你想要:将其附加到文件而不是覆盖。
编辑:是的,根据您的编辑,您正在创建一个新的
FileOutputStream
而不告诉它附加。 因此它会覆盖该文件。Creating the
ObjectOutputStream
itself won't overwrite anything. I suspect you just created a newFileOutputStream
which will have truncated any current content unless you tell it to append. I think you want:to make it append to a file instead of overwriting.
EDIT: Yes, as per your edit, you're creating a new
FileOutputStream
without telling it to append. It's therefore overwriting the file.我解决问题。 我使用提供程序而不是从 Guice 开始实例化 OutputStrams。
目前工作正常。
I solve the problem. I use provider instead instancing the OutputStrams in begin with Guice.
Work fine for now.