磁盘上的Java目录大小?

时间:2012-10-29 09:58:57

标签: java

我目前正在使用apache-commons FileUtils.sizeOfDirectory(文件文件)方法来获取目录的大小。我真正需要的是磁盘上目录的大小,这是Unix下 du 实用程序显示的目录,只是为了清楚。

是否可以用Java获取此信息?

2 个答案:

答案 0 :(得分:8)

du通过递归整个目录树并添加它找到的所有文件的大小来查找此信息。 (在将每个文件大小四舍五入到我认为的分配单元之后,以及如何找出分配单元我不知道的内容。)

你必须这样做,或者产生一个外部du进程来为你做这件事。

答案 1 :(得分:2)

您需要递归搜索文件夹树。

如果您使用的是Java 7,那就很好又快。

Files.walkFileTree(file.toPath(), new SimpleFileVisitor<Path>(){
    @Override
    public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
        size += attrs.size();
        return super.visitFile(file, attrs);
    }
 });

在Java 6中,您需要递归使用File.listFiles()并手动检查每个文件的大小。请注意,这很慢。因此,如果您正在查看大量文件,那么可能需要找到一个可以生成外部命令的解决方案。

相关问题