我正在构建一个使用 java.io.FileWriter 不断写入同一个文件的程序。

在运行时,每当我需要更新文件时,我都会调用 writes "properly" 方法并使用类级 FileWriter。问题开始于第二次 .write 调用,当 FileWriter 启动 时将 附加到文件,而不是 覆盖 它。

public class Example {
    private FileWriter fw = new FileWriter("file's path", false);

    public void writeToFile(String output) {
        fw.write(output);
        fw.flush();
    }
}

我怀疑 FileWriter 的“内存”以某种方式保留了其先前写入的数据,但我不想在每次调用时关闭并初始化它,因为它看起来很浪费。
  • 每次 .flush 调用后我都需要 .write 调用吗?
  • 除了在每次调用时初始化 FileWriter 和 .close 之外,我还有其他选择吗?

  • (我尝试查看较旧的问题,但它们似乎都处理 不会附加 的 FileWriters,或理论上的 FileWriter.flush 解释)

    最佳答案

    Writer(其中 FileWriter 是一个子类)是 documented 工作在面向流的模型中,例如随机访问模型。通过相同的 Writer 实例连续写入总是追加。要覆盖现有文件,您需要每次都构造一个新的 FileWriter 实例。无论如何,这实际上是一个相当便宜的操作。

    关于java - java.io.FileWriter 是专为一次性使用而设计的吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48210206/

    10-09 19:27