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