2017-08-10 156 views
1

對於需要使用UTF-8編碼附加到文本文件的項目。 在我的研究,我發現了兩個可能性:在utf8中追加文件

BufferedWriter out = new BufferedWriter(
    new OutputStreamWriter(new FileOutputStream("file.txt), "UTF-8") 
) 

這會寫信給我的UTF-8的文件,但它會覆蓋它,而不是附加給它,如果它已經存在。

然後我發現代碼apend與在FileWriter參數已存在的文件,但是這不會使用UTF-8明確地,而不是使用系統默認的字符集:現在

BufferedWriter out = new BufferedWriter(new FileWriter("myfile.txt", true)) 

我需要定義BOTH編碼以及附加到文件的可能性。只要依靠系統編碼或改變這不是一個選項。

有什麼想法?

+0

看到這樣的回答:https://stackoverflow.com/questions/30307382/how-to-append-text-to -file-in-java-8-using-specified-charset – diginoise

回答

3

你忘了true放慢參數添加到FileOutputStream構造:

BufferedWriter out = new BufferedWriter(
    new OutputStreamWriter(
     new FileOutputStream("file.txt", true), // true to append 
     StandardCharsets.UTF_8     // Set encoding 
    ) 
); 
+0

duh!顯然我錯過了將它設置在'FileOutputStream'上的選項,我只查看了'FileWriter'選項。 –

0
try { 
    BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("myFile.txt", true), "UTF-8")); 
    out.write("Hello World"); 
    out.close(); 
} catch (IOException e) { 
    e.printStackTrace(); 
}