我正在尝试计算Android中使用的文件存储总量。我使用了使用here
的递归函数当我从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一直告诉它是6Gb(这与我将手机连接到PC时的价值相同)。
我们在这里缺少什么?
答案 0 :(得分:1)
如果您只对总分区大小感兴趣(不是某个文件夹),您也可以使用Java的File
类:
File f = new File("/mnt/sdcard/");
long free = f.getFreeSpace();
long total = f.getTotalSpace();
long usable = f.getUsableSpace();
此外,Android可能会阻止sd-apps和数据的一部分。
答案 1 :(得分:1)
我使用了here
的递归函数
该函数计算包含文件的大小:
只需浏览所有文件并总结它们的长度:
...但文件的大小不一定等于它在磁盘上占用的空间量。
这不是几Kb的差异,而是16GB SD卡中的高达2GB。
此增量应按文件计数进行缩放。