附加到 utf8 中的文件

Appending to file in utf8

对于一个项目,我需要使用 UTF-8 编码附加到文本文件。 在我的研究中,我发现了两种可能性:

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

这将以 UTF-8 格式写入我的文件,但它会覆盖它,而不是附加到它(如果它已经存在)。

然后我在 FileWriter 中找到了使用参数附加到现有文件的代码,但这不会明确使用 UTF-8,而是使用默认的系统字符集:

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

我现在需要定义编码和附加到文件的可能性。仅依靠系统编码或更改这不是一个选项。

有什么想法吗?

您忘记将 true 参数添加到 FileOutputStream 构造函数中:

BufferedWriter out = new BufferedWriter(
    new OutputStreamWriter(
        new FileOutputStream("file.txt", true), // true to append
        StandardCharsets.UTF_8                  // Set encoding
    )
);
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();
}