如何在追加新数据之前清空FileWriter输出?

时间:2017-04-25 10:26:57

标签: java csv filewriter file-writing

当我再次运行程序时,它只是附加到现有文件。

我想清空文件,然后从业务逻辑

开始
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();

3 个答案:

答案 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);

通过这样做;你总是覆盖输出文件中当前的内容;然后你添加内容。