19

我的程序目前正在使用

FileOutputStream output = new FileOutputStream("output", true);

如果尚未创建输出文件,则 while 循环会创建输出文件,并使用 while 循环的每次迭代将一些数据附加到该文件中

 output.write(data).  

这很好,这就是我想要的。

如果我再次运行该程序,文件的大小只会翻倍,因为它将确切的信息附加到文件的末尾。这不是我想要的。如果我再次运行该程序,我想覆盖该文件。

4

3 回答 3

33

本文档建议您传递的参数是append参数。

签名如下所示

FileOutputStream(File file, boolean append)

您应该将该参数设置为,false因为您不想追加。

FileOutputStream output = new FileOutputStream("output", false);
于 2013-07-30T21:36:50.460 回答
17

如果我再次运行该程序,我想覆盖该文件。

false作为第二个参数传递,将append设置为 false:

FileOutputStream output = new FileOutputStream("output", false);

查看构造函数文档

如果第二个参数为真,那么字节将被写入文件的末尾而不是开头。

于 2013-07-30T21:36:34.753 回答
1

或者你可以删除文件,如果它在那里,然后总是创建它并完成工作。

于 2013-07-30T21:43:38.783 回答