【问题标题】:OutputStream delete file contents JAVAOutputStream 删除文件内容 JAVA
【发布时间】:2010-11-07 20:56:31
【问题描述】:

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

【问题讨论】:

    标签: java file objectoutputstream


    【解决方案1】:

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

    FileOutputStream fos = new FileOutputStream(filename, true);
    

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

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

    【讨论】:

    • 为什么阅读血腥的文档这么难?我不明白。 :(
    【解决方案2】:

    我解决了这个问题。我使用提供程序而不是从 Guice 开始实例化 OutputStrams。

    @Inject @ArticleOutputStream
    Provider<OutputStream> articleObjectOutputStream;
    
    articleOutputStream.get();
    

    现在工作正常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-15
      • 2012-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-14
      相关资源
      最近更新 更多