2008-10-30 6 views
0

Je veux obtenir la taille d'un lecteur (ou un chemin UNC pointant vers une partition serait bien, mais pas obligatoire), ainsi que de l'espace libre pour le lecteur (ou le chemin UNC). Cela n'a pas besoin de travailler sur une plateforme croisée; seulement dans Windows. Je sais que c'est facile à faire en Java 6, mais ce n'est pas une option; Je suis coincé avec Java 5.Taille du disque en Java 5

je peux obtenir l'espace libre disponible en faisant:

cmd.exe/c Z: \/-c

ou

cmd. exe/c \\ serveur \ share/-c

et juste d'analyser les octets résultants libres. Cependant, je n'arrive pas à trouver un moyen d'obtenir la taille totale du disque.

Des suggestions?

Répondre

3

Une façon de le faire serait d'utiliser fsutil sur la ligne de commande. Elle retourne quelque chose comme ceci:

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 votre nombre de fois secteurs les octets par secteur pour obtenir votre taille.

+0

cela ne fonctionnera pas pour les lecteurs réseau, mais je pense que c'est aussi bon qu'il va obtenir –

1

Vous pouvez le faire assez facilement en utilisant un appel JNI si vous êtes à l'aise avec ça ...

Si vous voulez une bibliothèque pré-emballés que vous pouvez utiliser avec JDK1.5, jetez un oeil à la Apache FileSystemUtils

Cela vient simplement encapsuler l'appel système que vous décrivez, mais c'est au moins une bibliothèque standard que vous pouvez utiliser jusqu'à ce que vous puissiez utiliser 1.6.

+0

En fait, FileSystemUtils va via la ligne de commande, en utilisant la commande dir. Et il ne supporte que la taille libre, pas la taille totale. –

0

Vous pouvez utiliser la bibliothèque SIGAR, qui vous donne un accès natif sur de nombreuses plateformes.

Questions connexes