2012-10-29 19 views
5

私は現在、apache-commons FileUtils.sizeOfDirectory(ファイルファイル)メソッドを使用してディレクトリのサイズを取得しています。私が実際に必要とするのは、ディスクのディスクのサイズがで、duのユーティリティがUnixの下に表示されているだけです。ディスク上のJavaディレクトリサイズ?

この情報はJavaで取得できますか?

答えて

8

duは、ディレクトリツリー全体を再帰的に検索し、見つかったすべてのファイルのサイズを追加することでこの情報を検出します。 (各ファイルサイズを割り当て単位まで丸めた後、どのように割り振り単位がわからないのかを知る方法)。

これを行うには、外部のduプロセスを同様に実行するか、起動する必要があります。

+0

コードをプラットフォームに依存しないようにする必要があるため、私はduを生成したくありません。私は割り当て単位の管理を調べようとします。ありがとう – Husker14

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

+1

ファイルのサイズ(size()メソッドから返されるもの)は必要ありませんが、ディスク上のファイルが占めるスペース(たとえば、10バイトのファイルは32バイトを占めることがあります)。 – Husker14

+0

ああ、私は参照してください。ごめんなさい。あなたのところに間違いがあります。 – Nano

+1

これが役に立ちます:http://stackoverflow.com/questions/25552/using-java-to-get-os-level-system-information – Nano

関連する問題