我希望使用Java获得Linux可用空间和内存。
public final class EnvironmentCheck
{
public EnvironmentCheck()
{
// If the HDD Free Space is less than 200 Megabytes write message HDD
// is too low
if (200 > checkHDDFreeSpace())
{
System.out.println("*** WARNING Hard Drive free space "
+ checkHDDFreeSpace()
+ " Megabytes " + "is too low! ***");
}
// If the RAM Free Space is less than 200 Megabytes write message HDD
// is too low
if (200 > checkRAMFreeSpace())
{
System.out.println("*** WARNING RAM free space "
+ checkRAMFreeSpace()
+ " Megabytes " + "is too low! ***");
}
}
public long checkHDDFreeSpace()
{
long availableSpace = 0;
FileSystem fs = FileSystems.getDefault();
for (FileStore store : fs.getFileStores())
{
try
{
availableSpace = store.getUsableSpace() / (1024*1024);
}
catch (IOException e)
{
}
}
return availableSpace;
}
public long checkRAMFreeSpace()
{
Runtime rt = Runtime.getRuntime();
long freeMem = rt.maxMemory() - (rt.totalMemory() - rt.freeMemory());
return freeMem / (1024 * 1024);
}
}
我总是得到这样的信息:
*警告硬盘空闲空间0兆字节太低! *
你能帮我修改一下我的代码吗?
在Windows上,我没有看到此警告消息。
答案 0 :(得分:3)
我想你想要sum
总空间
availableSpace += store.getUsableSpace() / (1024*1024);
答案 1 :(得分:2)
好像你只是从最终文件存储中返回值:
availableSpace = store.getUsableSpace() / (1024*1024);
始终为每个循环迭代重新分配availableSpace。这可能是你想要的(或不是!),但你隐含地隐藏了除最后一个之外的任何文件存储信息。