2008-10-30 5 views
0

해당 드라이브 (또는 UNC 경로)의 여유 공간뿐만 아니라 드라이브 크기 (또는 파티션을 가리키는 UNC 경로가 좋을 수도 있지만 필요하지 않음)를 가져 오려고합니다. 이것은 크로스 플랫폼에서 작동 할 필요가 없습니다. Windows에서만 가능합니다.Java에서 드라이브 크기 가져 오기 5

Java 6에서 쉽게 할 수 있다는 것을 알고 있지만 옵션이 아닙니다. 나는 수행하여 자바 5

내가 사용할 수있는 여유 공간을 얻을 수 있습니다와 붙어있어 :

cmd.exe를/C의 Z : \/-c

또는

cmd를. exe/c \\ server \ share/-c

그리고 결과 바이트를 구문 분석하면됩니다. 그러나 나는 총 드라이브 크기를 얻는 방법을 찾을 수없는 것 같습니다.

제안 사항?

답변

3

명령 줄에서 fsutil을 사용하는 한 가지 방법이 있습니다. 다음과 같이 반환합니다 :

D:\>fsutil fsinfo ntfsinfo c: 
NTFS Volume Serial Number :  0xd49cf9cf9cf9ac5c 
Version :       3.1 
Number Sectors :     0x0000000004a813ff 
Total Clusters :     0x000000000095027f 
Free Clusters :     0x00000000002392f5 
Total Reserved :     0x0000000000000490 
Bytes Per Sector :    512 
Bytes Per Cluster :    4096 
Bytes Per FileRecord Segment : 1024 
Clusters Per FileRecord Segment : 0 
Mft Valid Data Length :   0x000000000e70c000 
Mft Start Lcn :     0x00000000000c0000 
Mft2 Start Lcn :     0x0000000000000010 
Mft Zone Start :     0x0000000000624ea0 
Mft Zone End :     0x0000000000643da0 

크기를 얻으려면 섹터 수와 섹터 수를 곱합니다.

+0

네트워크 드라이브에서는 작동하지 않지만 이것이 좋은 결과라고 생각합니다. –

1

당신이 편안 경우는 JNI 호출을 사용하여 매우 쉽게 할 수 ... 당신은 당신이 JDK1.5와 함께 사용할 수있는 사전 패키지 라이브러리를하려면 Apache FileSystemUtils을 살펴

이것은 설명하는 시스템 호출을 단지 래핑하지만 적어도 1.6을 사용할 수있을 때까지 사용할 수있는 표준 라이브러리입니다.

+0

실제로 FileSystemUtils는 dir 명령을 사용하여 명령 줄을 통해 실행됩니다. 또한 전체 크기가 아닌 자유 크기 만 지원합니다. –

0

많은 플랫폼에서 네이티브 액세스를 제공하는 SIGAR 라이브러리를 사용할 수 있습니다.