在 Java 5 中获取驱动器大小

发布于 2024-07-09 04:41:17 字数 355 浏览 10 评论 0原文

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

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

我可以通过执行以下操作来获取可用空间:

cmd.exe /c Z:\ /-c

cmd.exe /c \\服务器\共享/-c

并仅解析出结果字节。 但是我似乎无法找到获取总驱动器大小的方法。

有什么建议么?

I want to get the size of a drive (or UNC path pointing to a partition would be nice, but not required), as well as free space for said drive (or UNC path). This doesn't need to work cross platform; only in Windows.

I know it's easy to do in Java 6, but that's not an option; I'm stuck with Java 5.

I can get the free space available by doing:

cmd.exe /c Z:\ /-c

or

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

and just parsing out the resulting bytes free. However I can't seem to find a way to get the total drive size.

Any suggestions?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

甜尕妞 2024-07-16 04:41:17

一种方法是在命令行上使用 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

将扇区数乘以每个扇区的字节数即可得到大小。

One way to do it would be to use fsutil on the command line. It returns something like this:

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 your number of sectors times the bytes per sector to get your size.

早茶月光 2024-07-16 04:41:17

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

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

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

You could do this pretty easily using a JNI call if you are comfortable with that...

If you want a pre-packaged library that you can use with JDK1.5, take a look at the Apache FileSystemUtils

This just wraps the system call that you describe, but at least it's a standard library that you can use until you are able to use 1.6.

乄_柒ぐ汐 2024-07-16 04:41:17

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

You could use the SIGAR library, which gives you native access on many platforms.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文