Java 覆盖现有的输出文件

Posted

技术标签:

【中文标题】Java 覆盖现有的输出文件【英文标题】:Java overwriting an existing output file 【发布时间】:2013-07-31 05:43:58 【问题描述】:

我的程序目前正在使用

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

如果尚未创建输出文件,while 循环将创建输出文件,并使用

为 while 循环的每次迭代添加一些数据到该文件
 output.write(data).  

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

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

【问题讨论】:

设置追加到false,如果你不能这样做,那么你可以File.deleteOnExit() 【参考方案1】:

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

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

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

查看constructor documentation:

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

【讨论】:

这行得通。我不确定为什么。我认为将其更改为 false 会不断覆盖我的循环数据,而不是整个文件,这会很糟糕。如果你想解释那会很棒,但没什么大不了的。但是是的,它有效,谢谢。 您以追加模式或写入模式打开文件。之后,无论您写入文件,都将相应地完成。仅在打开文件时指定模式。如果下次要追加,则需要关闭文件,然后以追加模式重新打开。 那里的默认值是false【参考方案2】:

This documentation 建议您传递的参数是append 参数。

签名如下所示

FileOutputStream(File file, boolean append)

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

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

【讨论】:

【参考方案3】:

或者您可以删除该文件(如果存在),然后始终创建它并完成工作。

【讨论】:

以上是关于Java 覆盖现有的输出文件的主要内容,如果未能解决你的问题,请参考以下文章

在现有的图像处理软件中融合dxf格式输出

如何覆盖现有的 .txt 文件

如何使用 If Not File.Exists 覆盖现有的 XML 文件

使用 Python 的 tarfile 时覆盖现有的只读文件

将现有的 defaultdict 输出为适合耀斑树状图的 JSON 格式?

如何在没有消息的情况下保存/覆盖现有的 Excel 文件