2012-10-29 3 views
5

현재 apache-commons FileUtils.sizeOfDirectory (파일 파일) 메소드를 사용하여 디렉토리 크기를 가져 왔습니다. 필자가 실제로 필요로하는 것은 디렉토리 의 디스크 크기가이고, 유추 아래 du 유틸리티로 표시되는 것입니다.Java 디렉토리 크기가 디스크에 있습니까?

이 정보를 Java로 가져올 수 있습니까?

답변

8

du은 전체 디렉토리 트리를 반복하고 찾은 모든 파일의 크기를 추가하여이 정보를 찾습니다. (각 파일 크기를 할당 단위까지 반올림 한 후 할당 단위가 무엇인지를 어떻게 알 수 있는지).

당신을 대신해서 수행하거나 외부 du 프로세스를 생성해야합니다.

+0

플랫폼 독립적 인 코드가 필요하기 때문에 나는 산란을하고 싶지 않습니다. 할당 단위 관리를 살펴 보겠습니다. 감사합니다 – Husker14

2

폴더 트리를 반복적으로 검색해야합니다.

자바 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); 
    } 
}); 

는 자바 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

관련 문제