現在、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()
、各ファイル サイズを再帰的に手動でチェックする必要があります。ただし、これは非常に遅いことに注意してください。したがって、多数のファイルを見ている場合は、外部コマンドを生成するソリューションを見つける価値があるかもしれません。