2

シリアル化されたオブジェクトを記録する必要があるファイルがあります。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;
}
4

2 に答える 2

13

ObjectOutputStreamそれ自体を作成しても、何も上書きされません。FileOutputStream追加するように指示しない限り、現在のコンテンツを切り捨てる新しいを作成したと思われます。私はあなたが欲しいと思います:

FileOutputStream fos = new FileOutputStream(filename, true);

上書きするのではなく、ファイルに追加します。

編集: はい、あなたの編集にFileOutputStreamよると、追加するように指示せずに新しいものを作成しています。したがって、ファイルを上書きしています。

于 2009-07-03T07:48:11.073 に答える
0

私は問題を解決します。代わりに、Guiceで始まるOutputStramsをインスタンス化するプロバイダーを使用します。

@Inject @ArticleOutputStream
Provider<OutputStream> articleObjectOutputStream;

articleOutputStream.get();

今のところうまくいきます。

于 2009-07-05T14:13:37.193 に答える