質問
ドライブのサイズ(またはパーティションを指すUNCパスはいいが、必須ではない)、およびそのドライブの空き領域(またはUNCパス)を取得したい。これはクロスプラットフォームで動作する必要はありません。 Windowsのみ。
Java 6で簡単に実行できることはわかっていますが、これはオプションではありません。 Java 5にこだわっています。
次の操作を行うことで空き領域を取得できます:
cmd.exe / c Z:\ / -c
または
cmd.exe / c \\ server \ share / -c
そして、結果のバイトをただ構文解析します。ただし、合計ドライブサイズを取得する方法を見つけることができないようです。
提案はありますか
解決
1つの方法は、コマンドラインで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
セクター数にセクターあたりのバイト数を掛けてサイズを取得します。
他のヒント
これに慣れていれば、JNI呼び出しを使用してこれを簡単に実行できます...
JDK1.5で使用できるあらかじめパッケージ化されたライブラリが必要な場合は、 Apache FileSystemUtils
これは、記述したシステムコールをラップするだけですが、少なくとも1.6を使用できるようになるまで使用できる標準ライブラリです。
SIGAR ライブラリを使用すると、多くのプラットフォームでネイティブにアクセスできます。 。
所属していません StackOverflow