有没有办法让我知道使用 JDK 1.4 的硬盘上的总空间?Apache commons 不提供类似的功能。请记住,我需要将它与 JDK 1.4 应用程序一起使用。
非常感谢。
更新: 我曾尝试使用 Sigar,但它与 JDK 1.4.2_08 不兼容。我下载了 Sigar 的源代码,以便使用我的 Java 版本构建它,但我无法解析 build.xml 中引用的依赖项。
有没有办法让我知道使用 JDK 1.4 的硬盘上的总空间?Apache commons 不提供类似的功能。请记住,我需要将它与 JDK 1.4 应用程序一起使用。
非常感谢。
更新: 我曾尝试使用 Sigar,但它与 JDK 1.4.2_08 不兼容。我下载了 Sigar 的源代码,以便使用我的 Java 版本构建它,但我无法解析 build.xml 中引用的依赖项。
最后,我使用适用于我的 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
鉴于File
磁盘空间方法仅在 Java 6 中添加,我怀疑您唯一的选择是调用特定于操作系统的二进制文件,例如
df -k /
(对于 Linux)
将应用程序迁移到最近的 JDK/JRE可能会更好地用于实现此类解决方案所需的工作量(但是,您可能有一些我不知道的限制,所以如果有,请忽略!)
我对 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();