如何在不删除现有数据的情况下写入文件

How to write to a file without deleting privious existing data

我正在尝试将数据写入文本文件。我正在使用此代码:

try (Writer writer = new BufferedWriter(new OutputStreamWriter(
          new FileOutputStream("filename.txt"), "utf-8"))) {
writer.write("something");
}

但是当程序 运行 时,文件正在覆盖文本文件中已经存在的数据。如何在不覆盖的情况下将新数据行写入同一个文本文件?有什么简单易行的写法吗?

我想你可以使用 FileWriter(File file, Boolean append)

Constructs a FileWriter object given a File object. If the second argument is true, then bytes will be written to the end of the file rather than the beginning.

try (Writer writer = Files.newBufferedWriter(
          Paths.get("filename.txt"), StandardCharsets.UTF_8,
          StandardOpenOption.WRITE,
          StandardOpenOption.APPEND)) {
    writer.write("something");
}

打开选项是可变参数列表,默认为创建新文件。

顺便说一句,FileWriter 使用平台编码,因此您有权不使用 class。不便携。