2012-02-01 13 views
0

FileOutputStreamを使用してアンドロイドデバイスのSDカード「sample.txt」にコンテンツを書き込んでいますなぜFileOutputStreamがディスク上の別の位置に書き込むのですか?

コンテンツを書き込もうとするたびに、FileOutputStreamはディスク上の別の位置に書き込みます。

私はファイル "sample.txt"の開始位置を確認して、それが512バイトを増やすたびに!

どうすればよいですか?

答えて

5

がファイルを上書きする場合は、FileOutputStreamとは関係ありません。ファイルはです。フラッシュメモリベースのファイルシステムでは、フラッシュの書き込み/消去サイクル数が限られているため、デバイスの同じ部分を何度も再利用することは避けられないため、フラッシュメモリファイルシステムは全体にわたって書き込みを広げようとしますデバイスは、以前に使用された領域を再利用することができます。それはうまくいって、それについて何もする必要はありません。ファイルシステムはそれをソートします。

の場合は、がファイルに追加されます。 constructors that allows appendingのいずれかを使用して、例えば:

OutputStream os = new FileOutputStream("sample.txt", true); // true = append 
...それはあなたがそれを行うことを求めているものだから、そのファイルが、成長しています。それ以外のコンストラクタのいずれかを使用するか、 append引数に falseを渡します。

関連する問題