2

Android で使用されるファイル ストレージの合計量を計算しようとしています。ここで使用されている再帰関数を使用しました

SD カードの合計ストレージからこのサイズを差し引くと、StatFs を使用して Android が提供するものとは異なる数値が得られます。

StatFs stat = new StatFs(path);
long blockSize = stat.getBlockSize();
long availableBlocks = stat.getFreeBlocks();
return Formatter.formatFileSize(ctx, availableBlocks * blockSize);

これは数Kbの差ではなく、16GBのSDカードで最大2GB。

市場に出回っているいくつかのストレージ分析アプリをチェックしましたが、同じ問題があります。彼らは私が 8.3 Gb の空き容量を持っていると言っていますが、Android は 6Gb だと言っています (これは、電話を PC に接続したときに得られる値と同じです)。

ここで何が欠けていますか?

4

2 に答える 2

1

ここで使用されている再帰関数を使用しました

その関数は、含まれているファイルのサイズを計算します。

すべてのファイルを調べて、それらの長さを合計するだけです。

...しかし、ファイルのサイズは、ディスク上で占有するスペースの量と必ずしも同じではありません。

これは数Kbの差ではなく、16GBのSDカードで最大2GB。

このデルタは、ファイル数に合わせて調整する必要があります。

于 2013-03-04T14:06:46.473 に答える
1

合計パーティション サイズ (一部のフォルダーではなく) のみに関心がある場合は、Java のFileクラスも使用できます。

File f = new File("/mnt/sdcard/");

long free = f.getFreeSpace();
long total = f.getTotalSpace();
long usable = f.getUsableSpace();

また、Android はおそらく sd-apps とデータの一部をブロックします。

于 2013-03-04T13:59:16.520 に答える