我目前正在使用 apache-commons FileUtils.sizeOfDirectory(File file) 方法来获取目录的大小。我真正需要的是磁盘上目录的大小,这是由 Unix 下的du实用程序显示的,只是为了清楚起见。
是否可以在 Java 中获取此信息?
我目前正在使用 apache-commons FileUtils.sizeOfDirectory(File file) 方法来获取目录的大小。我真正需要的是磁盘上目录的大小,这是由 Unix 下的du实用程序显示的,只是为了清楚起见。
是否可以在 Java 中获取此信息?
du
通过递归整个目录树并添加它找到的所有文件的大小来查找此信息。(在将每个文件大小四舍五入到我认为的分配单元之后,它如何找出分配单元是我不知道的)。
您将必须这样做,或者生成一个外部du
进程来为您执行此操作。
您需要递归搜索文件夹树。
如果您使用的是 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()
递归使用并手动检查每个文件的大小。请注意,虽然这非常慢。因此,如果您正在查看大量文件,则可能值得找到一个产生外部命令的解决方案。