我想用UTF-16写入一个文件,所以我使用PrintWriter(文件,“UTF-16”),但是它删除了文件中的所有内容,我可以使用FileWriter(file,true),但后来呢不会是UTF-16,并且显然没有PrintWriter的构造函数,如PrintWriter(Writer,Charset,boolean append);
我该怎么办?
答案 0 :(得分:4)
FileWriter
的JavaDoc说:
此类的构造函数假定默认字符编码和默认字节缓冲区大小是可接受的。要自己指定这些值,请在
OutputStreamWriter
上构建FileOutputStream
。
所以你可以这样做:
Writer writer = new PrintWriter(
new OutputStreamWriter(
new FileOutputStream(filename, true),
StandardCharsets.UTF16));
您可能还想在其中加入BufferedOutputStream
以获得最高效率。
答案 1 :(得分:3)
将OutputStreamWriter
与UTF-16字符集一起使用,用append = true打开FileOutputStream
。替代方案,请使用Files.newBufferedWriter
:
try (Writer writer = Files.newBufferedWriter(
Paths.of("filename.txt"),
StandardCharsets.UTF_16,
StandardOpenOption.APPEND)) {
...
}
答案 2 :(得分:1)
您可以使用
来完成new PrintWriter(new OutputStreamWriter(new FileOutputStream(file, true), "UTF-16"));