2

我正在尝试计算 Android 中使用的文件存储总量。我使用了这里使用的递归函数

当我从我的 SD 卡的总存储空间中减去这个大小时,我得到的数字与 Android 使用 StatFs 提供的数字不同。

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 一直告诉它是 6 Gb(这与我将手机连接到 PC 时获得的值相同)。

我们在这里缺少什么?

4

2 回答 2

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 回答
1

我使用了这里使用的递归函数

该函数计算包含的文件的大小:

只需浏览所有文件并总结它们的长度:

...但是文件的大小不一定等于它在磁盘上占用的空间量。

这不是几 Kb 的差异,而是在 16GB SD 卡中高达 2GB。

此增量应随文件计数缩放。

于 2013-03-04T14:06:46.473 回答