我目前使用apache-commons FileUtils.sizeOfDirectory(File file)方法來獲取目錄的大小。我真正需要的是,在磁盤上的目錄的大小,在Unix下由du實用程序顯示的大小,只是要清楚。磁盤上的Java目錄大小?
是否有可能在Java中獲取此信息?
我目前使用apache-commons FileUtils.sizeOfDirectory(File file)方法來獲取目錄的大小。我真正需要的是,在磁盤上的目錄的大小,在Unix下由du實用程序顯示的大小,只是要清楚。磁盤上的Java目錄大小?
是否有可能在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()
手動檢查每個文件的大小。請注意,這是非常緩慢的。因此,如果您正在查看大量文件,則可能需要找到一個生成外部命令的解決方案。
我不想派生du,因爲我需要的代碼是平臺無關的。我會嘗試着看看分配單元管理。謝謝 – Husker14