2013-07-30 109 views
3

我的程序正在使用的Java覆蓋

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

一個現有的輸出文件,而循環創建,如果尚未創建它的輸出文件和一些數據追加到該文件使用

while循環的每次迭代
output.write(data). 

這很好,是我想要的。

如果我再次運行該程序,該文件的大小會增加一倍,因爲它會將確切信息附加到文件末尾。這不是我想要的。如果我再次運行程序,我想覆蓋該文件。

+1

將append設置爲'false',如果你不能這樣做,那麼你可以'File.deleteOnExit()'。 –

回答

11

我想覆蓋文件,如果我再次運行該程序。

false作爲第二個參數,設置追加爲false:

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

時退房constructor documentation

如果第二個參數是真實的,那麼字節將被寫入到文件的結尾而不是開頭。

+0

這工作。我不知道爲什麼。我認爲把它改爲false會不斷覆蓋我的循環數據,而不是整個文件,這將是不好的。如果你覺得解釋說會很棒但沒什麼大不了的。但是,這是行之有效的,謝謝。 –

+1

您可以以追加模式或寫入模式打開文件。之後,無論你寫入文件,都會做相應的處理。模式僅在打開文件時指定。如果您想下次追加,則需要關閉該文件,然後以追加模式重新打開它。 –

+1

@johnstamos。歡迎您:) –

13

This documentation表明您傳遞的參數是append參數。

簽名如下所示

FileOutputStream(File file, boolean append) 

你應該是參數設置爲false,因爲你不希望追加。

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

或者您也可以刪除該文件,如果它的存在,然後一直創造並完成任務。