Ottieni dimensioni unità in Java 5
Domanda
Voglio ottenere le dimensioni di un'unità (o il percorso UNC che punta a una partizione sarebbe bello, ma non necessario), così come lo spazio libero per detta unità (o percorso UNC). Questo non deve funzionare su più piattaforme; solo in Windows.
So che è facile farlo in Java 6, ma questa non è un'opzione; Sono bloccato con Java 5.
Posso ottenere lo spazio libero disponibile facendo:
cmd.exe / c Z: \ / -c
o
cmd.exe / c \\ server \ share / -c
e semplicemente analizzando i byte risultanti liberi. Tuttavia, non riesco a trovare un modo per ottenere la dimensione totale dell'unità.
Qualche suggerimento?
Soluzione
Un modo per farlo sarebbe usare fsutil sulla riga di comando. Restituisce qualcosa del genere:
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
Moltiplica il tuo numero di settori per i byte per settore per ottenere la tua dimensione.
Altri suggerimenti
Potresti farlo abbastanza facilmente usando una chiamata JNI se ti senti a tuo agio con questo ...
Se desideri una libreria preconfezionata che puoi utilizzare con JDK1.5, dai un'occhiata a Apache FileSystemUtils
Questo avvolge semplicemente la chiamata di sistema che descrivi, ma almeno è una libreria standard che puoi usare fino a quando non sarai in grado di usare 1.6.
Puoi utilizzare la libreria SIGAR , che ti dà accesso nativo su molte piattaforme .