0

有没有办法让我知道使用 JDK 1.4 的硬盘上的总空间?Apache commons 不提供类似的功能。请记住,我需要将它与 JDK 1.4 应用程序一起使用。

非常感谢。

更新: 我曾尝试使用 Sigar,但它与 JDK 1.4.2_08 不兼容。我下载了 Sigar 的源代码,以便使用我的 Java 版本构建它,但我无法解析 build.xml 中引用的依赖项。

4

3 回答 3

0

最后,我使用适用于我的 Java 版本的 Sigar 1.6.2 得到了我需要的东西。我使用以下代码行得到了我需要的东西:

System.out.println("Disk usage on moint point drive / is "+sigar.getFileSystemUsage("/root"));

输出:

Disk usage on moint point drive / is  {DiskQueue=-1.0, DiskReadBytes=0, DiskWriteBytes=0, Free=2198724, DiskWrites=0, UsePercent=0.71, DiskReads=0, Files=425152, Used=4489992, Avail=1858952, FreeFiles=251740, DiskServiceTime=-1.0, Total=6688716}
Finished
于 2013-07-02T14:45:20.803 回答
0

鉴于File磁盘空间方法仅在 Java 6 中添加,我怀疑您唯一的选择是调用特定于操作系统的二进制文件,例如

df -k /

(对于 Linux)

将应用程序迁移到最近的 JDK/JRE可能会更好地用于实现此类解决方案所需的工作量(但是,您可能有一些我不知道的限制,所以如果有,请忽略!)

于 2013-07-01T15:34:20.963 回答
0

我对 Windows 系统不太熟悉,但对于 linux,您可能会获得最新的Runtime并创建将执行系统命令的新进程。

Runtime rt = Runtime.getRuntime();
Process proc = rt.exec("df -h");

您可以从输入流中获取命令的输出,然后解析输出以确定磁盘空间

BufferedReader br = new BufferedReader(new InputStreamReader(proc.getInputStream()));

确保等待进程退出并控制进程退出值。当命令执行成功时,Linux 命令返回 0。

int procReturn = proc.waitFor();
于 2013-07-01T16:26:41.397 回答