我目前正在使用apache-commons FileUtils.sizeOfDirectory(文件文件)方法来获取目录的大小。我真正需要的是磁盘上目录的大小,这是Unix下 du 实用程序显示的目录,只是为了清楚。
是否可以用Java获取此信息?
答案 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()
并手动检查每个文件的大小。请注意,这很慢。因此,如果您正在查看大量文件,那么可能需要找到一个可以生成外部命令的解决方案。