2016-02-11 5280 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