当我再次运行程序时,它只是附加到现有文件。
我想清空文件,然后从业务逻辑
开始FileWriter empty = new FileWriter("output.csv", true); //true = append
empty.write("");
empty.close();
FileWriter outfile = new FileWriter("output.csv", true); //true = append
// Add desired content
outfile.flush();
outfile.close();
答案 0 :(得分:2)
但您正在构建对象:FileWriter("output.csv", true)
doc解释了布尔值在文件中的作用:
在给定带有布尔值的文件名的情况下构造FileWriter对象 指示是否附加所写的数据。
将该布尔参数设置为false以覆盖文件...
FileWriter("output.csv", false)
或简单:
FileWriter("output.csv")
答案 1 :(得分:1)
要将其设为空,您可以覆盖它,并且需要使用单个文件。
empty
FileWriter
不是必需的。
在parameter
构造函数调用中指定将public FileWriter(File file, boolean append)
附加到false,或者最好不要使用public FileWriter(String fileName)
构造函数指定它。
默认情况下,它会覆盖文件:
FileWriter outfile = new FileWriter("output.csv");
答案 2 :(得分:1)
事情是:
FileWriter outfile = new FileWriter("output.csv", true); //true = append
创建一个追加到现有文件的FileWriter。
FileWriter outfile = new FileWriter("output.csv", false);
创建一个FileWriter,它将覆盖当前在该文件中的任何内容。
这是你有两个选择!
但真正的答案是:阅读您正在使用的类的javadoc,此行为显式 documented。
仅仅是为了记录:这是为什么人们应该真的小心使用布尔值参数作为" flags"的原因之一。我同意;对于一个新手,有这个"真的"坐在那里什么也没说。
A"更好"接口可以像:
一样使用FileWriter empty = new FileWriter("output.csv", FileWriterMode.APPEND);
正如您的要求似乎是:您希望空白该输出文件;然后将数据写入其中......只是忘记追加。从本质上讲,您要问:如何使用新内容覆盖我的CSV文件。然后答案是 - 你不需要"空"作家;跟着:
FileWriter outfile = new FileWriter("output.csv", false);
通过这样做;你总是覆盖输出文件中当前的内容;然后你添加内容。