0

FileOutputStream を使用して、Android デバイスの SD カードのファイル「sample.txt」にコンテンツを書き込んでいます

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

ファイル「sample.txt」の開始位置を確認したところ、毎回512バイト増加しています!

私は何をすべきか?

4

1 に答える 1

5

ファイルを上書きしている場合、それはファイルシステムがそのことを行っているだけであり、FileOutputStream. フラッシュ メモリ ベースのファイル システムでは、デバイスの同じ部分を何度も再利用することを避けることは珍しくありません。これは、フラッシュの書き込み/消去サイクルの数が限られているためです。以前に使用した領域が最も古い場合にのみ再利用します。それは問題なく、あなたがそれについて何もする必要はありません.ファイルシステムがそれを整理します.

ファイルに追加する場合、たとえば、追加を許可するコンストラクターのいずれかを使用します。

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

...その後、ファイルが大きくなっています。それがあなたが求めていることだからです。それが望ましくない場合は、他のコンストラクターのいずれかを使用するかfalseappend引数に渡します。

于 2012-02-01T10:28:45.423 に答える