2016-11-26 61 views
0

我正在做一個任務,其中的一部分我需要通過文本文件循環並輸出信息,具體取決於我所做的某些搜索項,但之後我需要編輯文檔用戶會接受行,我的代碼編輯文檔是:使用java更新文本文件

int y = null; 
PrintWriter write = new PrintWriter(fileName); 
if (confirmation.equals("Y")) { 
        System.out.println("What is your email to confirm your booking?"); 
        email = S.next(); 

        write.println(room + (" ") + roomB + (" ") + price + (" ") + pool + (" ") + lounge + (" ") + email); 
        y = 1; 
       } 

它完成它會寫只是一條線,並刪除其餘數據,而不是僅僅改變這一行後會發生什麼。

+0

我沒有得到您的問題,您嘗試更改整個內容或只是指示的行? –

+0

對不起,我只是想編輯一行,所以說行是「577 single 36.00 true true」我試圖編輯該行,所以它會導致「577 single 36.00 true true emailAddress」,但保留文檔的其餘部分爲 – E97

+0

如果您知道在何處添加文本,可以嘗試使用[PrintWriter.Append()](http://docs.oracle.com/javase/7/docs/api/java/io/ PrintWriter.html#追加(java.lang.CharSequence中,%20int,%20int)) – Mat

回答

2

我認爲你的問題是,println()不關心你在文件中有什麼。它只是寫入流,導致覆蓋現有的內容。

如果您只需要更改一行,請考慮讀取現有文件內容,然後替換該內容中的行,然後將整個修改的內容寫入文件。

當然,您必須記住,如果文件很大,一次讀取整個內容可能會很昂貴或者很危險,因此可能需要進行一些優化。