2009-07-03 5 views
2

파일을 가지고있어서 직렬화 된 객체를 기록해야합니다. 나는 파일로 쓰기를 위해 ObjectOutputStream을 열었다. 파일에 아무것도 쓰지 않았다면 파일 내용이 삭제됩니다. ObjectOutputStream을 만들 때 콘텐츠를 삭제하고 싶지 않습니다. ObjectOutputStream 자체가 아무것도 덮어 쓰지 않습니다 만들기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(); 

지금은 괜찮습니다.

관련 문제