2013-03-24 61 views
0

我使用兩個FileWriter使用兩個FileWriters,其中一個附加,另一個不是

第一個不追加

BufferedWriter versionWriter = new BufferedWriter(new FileWriter(new File(filePath))); 
versionWriter.write(s); 
versionWriter.close(); 

,而我想後追加一個。

BufferedWriter bw = new BufferedWriter(new FileWriter(new File(filePath), true)); 
bw.newLine(); 
bw.write(s); 

問題是,我的第一個FileWriter破壞整個文件,因此使我失去了我的數據。

的原因,我用兩個FileWriter正在做的是,第一個應該重寫我的文本文件的第一行,而第二個應該追加到文件的末尾。

這樣做的正確方法是什麼?

編輯: 我意識到這是可以先閱讀一切,然後將其重新保存,但是這是非常低效的,尤其是因爲我將需要大量的數據存儲在文件中。

+0

使用一個filewriter可能是你必須防止數據丟失。第一部分爲 – 2013-03-24 11:57:51

回答

2

使用RandomAccessFile.seek(...)將數據寫入文件的特定位置。

但是,除了讀入內存之外,「替換文件的第一行」沒有任何意義,替換第一行並再次寫入文件。除非這條線總是有相同的長度。而且你注意不要覆蓋EOL角色。 :-)

順便說一句,不要忘記在關閉前調用flush()。

+1

+1。但關閉BufferedWriter會自動刷新它。 – 2013-03-24 12:03:53

+0

謝謝!正是我需要的。 – 2013-03-24 12:12:35