我想获得驱动器的大小(或指向分区的UNC路径会很好,但不是必需的),以及所述驱动器(或UNC路径)的可用空间。这不需要跨平台工作;仅在Windows中。

我知道在Java 6中很容易做到,但这不是一个选择;我坚持使用Java 5。

我可以通过以下方式获得可用空间:

  

cmd.exe / c Z:\ / -c

     

     

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

只是将结果字节解析出来。但是我似乎无法找到获得总驱动器大小的方法。

有什么建议吗?

有帮助吗?

解决方案

一种方法是在命令行上使用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 库,该库可让您在许多平台上进行原生访问

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top