android目录大小

use*_*469 7 android file

我需要计算目录的物理大小.这样做的天真算法可能是:

public static long getFolderSize(File dir) {
long size = 0;
for (File file : dir.listFiles()) {
    if (file.isFile()) {
        System.out.println(file.getName() + " " + file.length());
        size += file.length();
    }
    else
        size += getFolderSize(file);
}
return size;
}
Run Code Online (Sandbox Code Playgroud)

但如何处理符号链接?

Din*_*ati -1

您最好使用其他 API 来获取与此相关的 API 的文件大小

public static long getFolderSize(File dir) {
long size = 0;
for (File file : dir.listFiles()) {
    if (file.isFile()) {
        System.out.println(file.getName() + " " + file.getTotalSpace());
        size += file.getTotalSpace();
    }
    else
        size += getFolderSize(file);
}
return size;
}
Run Code Online (Sandbox Code Playgroud)

  • 文档对 getTotalSpace() 说:“返回包含此路径的分区的总大小(以字节为单位)。” -> 它不返回文件大小。+ 它仅适用于 api 级别 9(我必须在 1.6 上运行) (2认同)