快速的問題在這裏,我怎麼可以更新Java中的存在文件?當我打開這樣的文件:
try {
File inFile = new File("scores.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(
new FileInputStream(inFile)));
該文件的所有以前的內容被刪除。但我不希望它被刪除,因爲我需要這些信息。非常感謝。
快速的問題在這裏,我怎麼可以更新Java中的存在文件?當我打開這樣的文件:
try {
File inFile = new File("scores.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(
new FileInputStream(inFile)));
該文件的所有以前的內容被刪除。但我不希望它被刪除,因爲我需要這些信息。非常感謝。
(在沒有寫入和基於使用的FileInputStream
實際代碼)的FileOutputStream
兩個參數的構造函數誰是第二個參數的
使用一個是boolean
表示,如果該文件應該被追加到,而該覆蓋:
try
{
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream("scores.txt", true)));
//^^^^ means append
一個FileOutputStream或一個FileWriter的constructurs可以採取其指示寫入的數據是否應該附加到的末尾的附加布爾參數文件(而不是覆蓋文件內容)。看看this link。
所以你可以這樣做:new FileOutputStream(inFile, true)
,結果是文件的前一個內容將保持不變,並且任何寫入流的內容都將被追加到文件的末尾。
如果你想使文件更高級的更新(例如替換文件中的某些具體內容),還有就是API中沒有具體的方式做到這一點,據我所知。我想你可以從舊的文件讀取和寫入你想保持到一個新的文件,並寫入更換到新的文件,以及一切。之後,您將刪除舊文件並將新文件重命名爲原始文件名。至少我是這樣做的,但可能存在我不知道的更好的方式。
讀取文件,它不會寫入它。你發佈了錯誤的代碼嗎? – hmjd 2012-04-02 22:08:20
你確定這些行會刪除文件內容嗎?你是否還在代碼中的某個點寫入文件? – 2012-04-02 22:09:18
是的,我也寫作。 – Sagi 2012-04-02 22:10:59