2016-02-11 5281 views
1

我讀到了FileWriter的java文檔 - 它不允許我們指定編碼。我使用FileWriter是爲了避免在將字符串列表寫入文件時自動附加的換行符(並且我認爲這是我可以用來實現的唯一的東西)。在FileWriter中設置編碼的替代方法 - Java

我現在面臨一些問題,幾個屬性文件中的一些日文字符被寫爲「???」,所以我需要以某種方式傳遞編碼信息。有沒有其他方法可以避免添加換行符或將封裝信息傳遞給FileWriter?

回答

4

請勿使用FileWriter,而應使用new OutputStreamWriter(new FileOutputStream(file), encoding)

1

如果您使用的是Path(Java 7+),則可以使用Files.newBufferedWriter(path, charset, options)指定Charset。 (這也包括你的輸出在BufferedWriter,這很好。)

經典的替代方案是使用OutputStreamWriter並通過Charset這種方式。

總是向作者傳遞一個字符集是一個好習慣,即使你不認爲它可能會處理非ASCII內容。

+0

但我認爲newBufferedWriter會追加一個系統特定的換行符作爲EOL,我試圖避免。 BufferedWriter()會這樣做,不確定newBufferedWriter的行爲是否與w.r.t不同。 – AshwiniR

+0

啊,有趣。我知道BufferedWriter支持newLine()來添加特定於平臺的換行符,但我認爲如果你寫了一個文字\ n,那就會被使用。這不是你看到的行爲嗎? –

+0

我不想添加特定於平臺的換行符。 BufferedWriter正是如此。我想保留源文本文件中的換行符。但是現在我測試了OutputStreamWriter並且它工作正常! :-)沒有添加換行符,也允許指定編碼! – AshwiniR