我想使用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 MB太低*
你能帮我修改代码吗?
在Windows上,我看不到此警告消息。
我想你想sum
的总空间
availableSpace += store.getUsableSpace() / (1024*1024);
您似乎只是从最终文件存储返回值:
availableSpace = store.getUsableSpace() / (1024*1024);
available空间总是为每个循环迭代重新分配。这很可能是您想要的(或者不是!),但您隐式地隐藏了除最后一个信息之外的任何文件存储信息。