我的程序正在使用的Java覆盖
FileOutputStream output = new FileOutputStream("output", true);
一个现有的输出文件,而循环创建,如果尚未创建它的输出文件和一些数据追加到该文件使用
while循环的每次迭代output.write(data).
这很好,是我想要的。
如果我再次运行该程序,该文件的大小会增加一倍,因为它会将确切信息附加到文件末尾。这不是我想要的。如果我再次运行程序,我想覆盖该文件。
我的程序正在使用的Java覆盖
FileOutputStream output = new FileOutputStream("output", true);
一个现有的输出文件,而循环创建,如果尚未创建它的输出文件和一些数据追加到该文件使用
while循环的每次迭代output.write(data).
这很好,是我想要的。
如果我再次运行该程序,该文件的大小会增加一倍,因为它会将确切信息附加到文件末尾。这不是我想要的。如果我再次运行程序,我想覆盖该文件。
我想覆盖文件,如果我再次运行该程序。
通false
作为第二个参数,设置追加为false:
FileOutputStream output = new FileOutputStream("output", false);
如果第二个参数是真实的,那么字节将被写入到文件的结尾而不是开头。
这工作。我不知道为什么。我认为把它改为false会不断覆盖我的循环数据,而不是整个文件,这将是不好的。如果你觉得解释说会很棒但没什么大不了的。但是,这是行之有效的,谢谢。 –
您可以以追加模式或写入模式打开文件。之后,无论你写入文件,都会做相应的处理。模式仅在打开文件时指定。如果您想下次追加,则需要关闭该文件,然后以追加模式重新打开它。 –
@johnstamos。欢迎您:) –
This documentation表明您传递的参数是append
参数。
签名如下所示
FileOutputStream(File file, boolean append)
你应该是参数设置为false
,因为你不希望追加。
FileOutputStream output = new FileOutputStream("output", false);
或者您也可以删除该文件,如果它的存在,然后一直创造并完成任务。
将append设置为'false',如果你不能这样做,那么你可以'File.deleteOnExit()'。 –