我正在构建一个使用 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
调用吗? .close
之外,我还有其他选择吗? (我尝试查看较旧的问题,但它们似乎都处理 不会附加 的 FileWriters,或理论上的
FileWriter.flush
解释) 最佳答案
Writer
(其中 FileWriter
是一个子类)是 documented 工作在面向流的模型中,例如随机访问模型。通过相同的 Writer
实例连续写入总是追加。要覆盖现有文件,您需要每次都构造一个新的 FileWriter
实例。无论如何,这实际上是一个相当便宜的操作。
关于java - java.io.FileWriter 是专为一次性使用而设计的吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48210206/