2012-02-01 78 views
0

我使用FileOutputStream中寫我的內容到Android設備的SD卡爲什麼FileOutputStream寫入磁盤上的不同位置?

,但每次我嘗試寫的內容時間上的一個文件「sample.txt的」,FileOutputStream中在磁盤上的不同位置寫入它。

我已經檢查文件「sample.txt」的開始位置,並且每次增加512字節!

我該怎麼辦?

回答

5

如果你是覆蓋該文件,那麼這只是文件系統做它的事情,與FileOutputStream無關。基於閃存的文件系統一次又一次避免重複使用設備的相同部分是很平常的,因爲閃存的寫入/擦除週期數量有限,所以閃存文件系統試圖將寫入分散到整個設備,只有當它們是最舊的可用區域時才重用先前使用的區域。這很好,沒有什麼需要你做的,文件系統把它整理出來。

如果您是附加到文件中,例如,使用constructors that allows appending之一,例如:

OutputStream os = new FileOutputStream("sample.txt", true); // true = append 

...然後將文件越來越大,因爲這是你要求它做的事。如果這不是您想要的,請使用其他構造函數之一,或者通過參數傳遞false