0

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

我知道在 Java 6 中很容易做到,但这不是一个选择;我被Java 5困住了。

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

cmd.exe /c Z:\ /-c

或者

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

并且只是免费解析出结果字节。但是我似乎找不到获得总驱动器大小的方法。

有什么建议么?

4

3 回答 3

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

将您的扇区数乘以每个扇区的字节数以获得您的大小。

于 2008-10-30T19:34:21.513 回答
1

如果您对此感到满意,则可以使用 JNI 调用轻松完成此操作...

如果您想要一个可与 JDK1.5 一起使用的预打包库,请查看Apache FileSystemUtils

这只是包装了您描述的系统调用,但至少它是一个您可以使用的标准库,直到您能够使用 1.6。

于 2008-11-02T02:58:16.683 回答
0

您可以使用SIGAR库,它可以让您在许多平台上进行本机访问。

于 2008-12-13T09:01:35.857 回答