快速统计目录(文件夹)大小,有哪些好的算法?

2019-09-18 19:44:25 +08:00
 gIrl1990

https://gitbox.apache.org/repos/asf?p=commons-io.git;a=blob;f=src/main/java/org/apache/commons/io/FileUtils.java;h=72d8f2af6910cdad49e3d50c7a06e5a28c2f37e7;hb=HEAD#l2667

    public static long sizeOfDirectory(final File directory) {
        checkDirectory(directory);
        return sizeOfDirectory0(directory);
    }

    private static long sizeOfDirectory0(final File directory) {
        final File[] files = directory.listFiles();
        if (files == null) {  // null if security restricted
            return 0L;
        }
        long size = 0;

        for (final File file : files) {
            if (!isSymlink(file)) {
                size += sizeOf0(file); // internal method
                if (size < 0) {
                    break;
                }
            }
        }

        return size;
    }

    private static long sizeOf0(final File file) {
        if (file.isDirectory()) {
            return sizeOfDirectory0(file);
        }
        return file.length(); // will be 0 if file does not exist
    }
1035 次点击
所在节点    问与答
2 条回复
gIrl1990
2019-10-08 16:13:34 +08:00
gIrl1990
2019-10-08 16:37:29 +08:00
修正问题: 有木有引入线程池或者其它优化之类的(其它统计法)?

新增参考: https://github.com/gaul/ptools

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/601928

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX