我的程序正在使用的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()'。 –