java - JAVA OutputStream删除文件内容

标签 java file objectoutputstream

我有需要记录序列化对象的文件。我打开 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;
}

最佳答案

创建ObjectOutputStream本身不会覆盖任何内容。我怀疑您刚刚创建了一个新的 FileOutputStream ,除非您告诉它附加,否则它将截断任何当前内容。我想你想要:

FileOutputStream fos = new FileOutputStream(filename, true);

使其附加到文件而不是覆盖。

编辑:是的,根据您的编辑,您正在创建一个新的 FileOutputStream 而不告诉它追加。因此它会覆盖该文件。

关于java - JAVA OutputStream删除文件内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1078232/

相关文章:

file - 如何在Flutter中获取文件扩展名?

java - 序列化和反序列化同一对象并不反射(reflect)其状态的变化

java - 通过套接字发送文件后获取 "java.io.EOFException"

java - 套接字异常 : Connection reset on server with ObjectInputStream

java - jcheckbox 上的 Action 监听器

java - 允许应用程序使用网络发送或接收数据?

java - 一场 war 中的类(class)无法访问同一耳朵的另一场 war 中的类(class)

java - 当从 Atmosphere 的 MeteorServlet 中使用 Spring DispatcherServlet 时,Spring 上下文会加载两次

python - 为什么Python中的for循环只打印同一种文件名类型而不打印其他文件名类型?

c++ - 如何在C++中创建虚拟存储空间?