【问题标题】:android directory size安卓目录大小
【发布时间】:2011-11-22 10:53:46
【问题描述】:

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

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;
}

但是如何处理符号链接呢?

【问题讨论】:

    标签: android file


    【解决方案1】:

    getCanonicalPath() 这通常涉及删除冗余名称,例如“。”和路径名中的“..”,解析符号链接(在 UNIX 平台上)。 http://docs.oracle.com/javase/1.4.2/docs/api/java/io/File.html

    【讨论】:

      【解决方案2】:

      我对第一个问题的解决方案——如何计算物理尺寸: How can I get the size of a folder on SD card in Android?

      这里是如何检测符号链接的解决方案: Java 1.6 - determine symbolic links

      【讨论】:

        【解决方案3】:

        您最好使用其他 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;
        }
        

        【讨论】:

        • 文档说 getTotalSpace() :“返回包含此路径的分区的总大小(以字节为单位)。” -> 它不返回文件大小。 + 它仅适用于 api 级别 9(我必须在 1.6 上运行)
        • + 符号链接可以创建循环引用。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-11-14
        • 2017-03-02
        • 2014-03-05
        • 2011-07-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多