Obter tamanho de unidade em Java 5
Pergunta
Eu quero ficar do tamanho de um carro (ou UNC caminho apontando para uma partição seria bom, mas não é obrigatório), bem como espaço livre para a referida unidade (ou caminho UNC). Isso não precisa trabalhar em várias plataformas; apenas no Windows.
Eu sei que é fácil de fazer em Java 6, mas isso não é uma opção; Eu estou preso com Java 5.
posso obter o espaço livre disponível fazendo:
cmd.exe / c Z: \ / -c
ou
cmd.exe / c \\ server \ share / -c
e apenas analisar o resultante bytes livres. No entanto, eu não consigo encontrar uma maneira de obter o tamanho total da unidade.
Todas as sugestões?
Solução
Uma maneira de fazer isso seria usar fsutil na linha de comando. Ele retorna algo como isto:
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
Multipy seu número de setores vezes os bytes por setor para obter o seu tamanho.
Outras dicas
Você pode fazer isso muito facilmente usando uma chamada JNI se você está confortável com isso ...
Se você quiser uma biblioteca pré-embalados que você pode usar com jdk1.5, dê uma olhada no Apache FileSystemUtils
Isso só envolve a chamada de sistema que você descreve, mas pelo menos é uma biblioteca padrão que você pode usar até que você é capaz de usar 1.6.
Você pode usar o href="http://support.hyperic.com/display/SIGAR/Home" rel="nofollow noreferrer"> SIGAR biblioteca , que lhe dá acesso nativo em muitas plataformas .