Java 总磁盘空间JDK 1.4

Java 总磁盘空间JDK 1.4,java,filesystems,java1.4,Java,Filesystems,Java1.4,有没有办法让我知道使用JDK1.4的硬盘上的总空间?Apache commons不提供类似的功能。记住,我需要在JDK1.4应用程序中使用它 非常感谢 更新: 我曾尝试使用Sigar,但它与JDK1.4.2_08不兼容。我下载了Sigar的源代码,以便用我的Java版本构建它,但我无法解析build.xml中引用的依赖项。鉴于文件磁盘空间方法仅在Java 6中添加,我怀疑您唯一的选择是调用特定于操作系统的二进制文件,例如 df -k / (适用于Linux) 您在实现这样一个解决方案上需要花费

有没有办法让我知道使用JDK1.4的硬盘上的总空间?Apache commons不提供类似的功能。记住,我需要在JDK1.4应用程序中使用它

非常感谢

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

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

df -k /
(适用于Linux)


您在实现这样一个解决方案上需要花费的精力可能最好花在将应用程序移动到最新的JDK/JRE上(但是,您可能有一些我不知道的限制,因此如果有,请忽略!)

我不太熟悉windows系统,但对于linux,您可能会得到当前的
运行时
,并创建新的进程来执行系统命令

Runtime rt = Runtime.getRuntime();
Process proc = rt.exec("df -h");
您可以从输入流中获取命令的输出,然后解析输出以确定磁盘空间

BufferedReader br = new BufferedReader(new InputStreamReader(proc.getInputStream()));
确保等待进程退出并控制进程退出值。当命令执行成功时,Linux命令返回0

int procReturn = proc.waitFor();

最后,我使用与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

右键点击文件夹并检查大小,这就是你想要的吗?不,这不是他想要的Java 1.4是古老的。仍然使用它是维护、开发和安全的噩梦。这至少是升级的3个主要原因。每次你被迫进行一些丑陋的黑客攻击时,都要告诉你的老板,因为你仍然在使用11年前发布的Java版本(甚至Java 5已经有9年的历史了!),我们仍然在使用它,因为我们有一些嵌入式硬件具有Java的特殊版本(处理器是基于ARM的)。我们需要为新版本的Java购买许可证,这在现在是不可行的。我已经准备了一个shell脚本:df-H-P/root | grep-vE'^Filesystem | tmpfs | cdrom | awk'{print$5”“$1}“问题是上述结果在不同的硬件/发行版之间不一致…@MouhammedSoueidane-要么升级到Java 6/7。。。我已经准备了一个shell脚本:df-H-P/root | grep-vE'^Filesystem | tmpfs | cdrom | awk'{print$5”“$1}'问题是,上述结果在不同的硬件/发行版之间不一致……不要使用脚本获取输出的特定部分。获取读卡器对象中的所有输出“df-h”。然后在java中解析它。Java有更多解析文本的选项。