2009-07-03 20 views
2

私はシリアル化されたオブジェクトを記録する必要があるファイルがあります。私はファイルを書くためにObjectOutputStreamを開きます。ファイルに何も書き込まなかった場合、ファイルの内容は削除されます。私はコンテンツを削除することを望まない。ObjectOutputStreamObjectOutputStream自体は何も上書きされません作成OutputStreamファイルの内容を削除するJAVA

私のコード(私は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; 
} 

答えて

13

。私はあなたが追加するように指示しない限り、最新のコンテンツを切り捨てた新しいFileOutputStreamを作成したと思う。私は、あなたがしたいと思う:

FileOutputStream fos = new FileOutputStream(filename, true); 

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

編集:はい、編集ごとに、追加するように伝えずに新しいFileOutputStreamを作成しています。したがって、ファイルを上書きします。

+0

なぜ血まみ​​れの文書を読んでいるのですか?理解できません。 :( – Bombe

0

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

@Inject @ArticleOutputStream 
Provider<OutputStream> articleObjectOutputStream; 

articleOutputStream.get(); 

今のところ問題ありません。

関連する問題