2014-10-26 135 views
0

我正在使用txt文件,使用類PrintWriter創建它們。這允許我使用println(...)方法在txt文件內部打印一些內容。將文本行添加到文本文件的最佳策略

但現在我需要在我創建的列表末尾添加一些內容。就像這樣:

PrintWriter writer = new PrintWriter("File.txt", "UTF-8"); 

writer.println("Hello"); 
writer.println("Josh!"); 

writer.close(); 

的結果是這樣的文件:

你好

喬希!

但是如果我想在文本的底部添加新單詞怎麼辦?我更喜歡覆蓋內容更新的文件「File.txt」?

你好

喬希!

你好嗎?

我在想的東西一樣,「好吧,我必須在結尾處加上另一條線,所以讀取所有文件,並寫入另一個文件(具有相同的名稱和內容)在結尾處增加一個新行「,但這似乎太奇怪了,我覺得還有另一種簡單的方法來做到這一點。任何其他想法?

+1

http://docs.oracle.com/javase/7/docs/api/java/io /FileOutputStream.html#FileOutputStream%28java.lang.String,%20boolean%29 – 2014-10-26 16:12:53

+1

'PrintWriter'實現'Appendable',因此它有'append()'方法。 – MirMasej 2014-10-26 16:23:54

回答

1

您的懷疑是正確的。

您應該使用try with resources(Java 7+):

try(PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("File.txt", true)))) { 
    out.println("How are you?"); 
}catch (IOException e) { 
    //exception handling left as an exercise for the reader 
} 

的第二個參數的FileWriter constructor會告訴它附加到文件(而不是清除文件)。對於昂貴的作家(即FileWriter),建議使用BufferedWriter,使用PrintWriter可以訪問您可能從System.out中使用的println語法。但是BufferedWriter和PrintWriter包裝並不是絕對必要的。

此外,您還可以在每次運行時追加到文件,而不是替換整個文件。最後,嘗試使用資源意味着您不必撥打.close(),這是爲您完成的! Grabbed from here

1

你可以簡單地用一個FileWriter相反,它具有附加模式,你可以啓用:

FileWriter writer = new FileWriter("File.txt"); 

    writer.write("Hello\n"); 

    writer.write("Josh!\n"); 

    writer.close(); 

    writer = new FileWriter("File.txt", true); 

    writer.append("Great!"); 

    writer.close(); 
相關問題