我想获得驱动器的大小(或指向分区的UNC路径会很好,但不是必需的),以及所述驱动器(或UNC路径)的可用空间。这不需要跨平台工作;仅在Windows中。
我知道在Java 6中很容易做到,但这不是一个选择;我坚持使用Java 5。
我可以通过以下方式获得可用空间:
cmd.exe / c Z:\ / -c
或
cmd.exe / c \\ server \ share / -c
只是将结果字节解析出来。但是我似乎无法找到获得总驱动器大小的方法。
有什么建议吗?
答案 0 :(得分: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
将扇区数乘以每个扇区的字节数来获得您的大小。
答案 1 :(得分:1)
如果您对此感到满意,可以使用JNI调用轻松完成此操作...
如果您想要一个可以与JDK1.5一起使用的预打包库,请查看Apache FileSystemUtils
这只是包装您描述的系统调用,但至少它是一个标准库,您可以使用它直到您能够使用1.6。
答案 2 :(得分:0)
您可以使用SIGAR库,它允许您在许多平台上进行本机访问。