2014-10-09 52 views
0

如何在FileInputStream(...)後追加文件中的數據而不清潔?Java輸入流追加而不刪除

這就是我從我的HashMap <String, String> storage追加:

DataOutputStream stream = new DataOutputStream(new FileOutputStream("myfile.dat")); 
    for (Map.Entry<String, String> entry : storage.entrySet()) { 
     byte[] bytesKey = entry.getKey().getBytes("UTF-8"); //I need to write using UTF8 
     stream.writeInt(bytesKey.length); 
     stream.write(bytesKey); 
     byte[] bytesVal = entry.getValue().getBytes("UTF-8"); 
     stream.write(bytesVal); 
    } 
    stream.close(); 

那麼,問題是,當我再次打開它,它會清除我的文件中的所有以前的數據。如何避免這種情況?

+1

可能的重複[如何將文本附加到Java中的現有文件](http://stackoverflow.com/questions/1625234/how-to-append-text-to-an-existing-file-in-java ) – MikeTheLiar 2014-10-09 15:39:15

+0

http://docs.oracle.com/javase/7/docs/api/java/io/FileOutputStream.html#FileOutputStream(java.io.File,%20boolean) – MikeTheLiar 2014-10-09 15:39:58

回答

1

真實參數添加到FileOutputStream中,這樣它會追加

DataOutputStream stream = new DataOutputStream(new FileOutputStream("myfile.dat", true)); 
+0

不,問題是當我打開程序時再次清除我的文件中的所有以前的數據。如何避免這種情況?標誌TRUE;不解決這個問題 – 2014-10-09 16:14:28

+0

您通過構建FileOutputStream中我已經解釋的方式,使其在附加模式開始 – ControlAltDel 2014-10-09 16:21:53

+0

看解決這個問題: 1)我開始計劃 2)在我的文件 寫數據再次 3)終止程序 4)打開文件,我看到所有的數據,我寫 5)啓動程序 6)收件未便再 7)終止 8)看文件,但沒有數據我第一次寫。只有我上次追加的最後一個數據。這就是問題 – 2014-10-09 16:24:31

0

大家誰看到這個答案,請儘可能周到。我花了整整一天的時間解決這個問題,只是因爲我的一個課程叫PrintWriter pw = new PrintWriter(new OutputStreamWriter(new FileOutputStream("myfilename", "UTF8"));,所以這清除了我的文件。

祝你好運!