Linux可用空间不正确



我想使用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空间总是为每个循环迭代重新分配。这很可能是您想要的(或者不是!),但您隐式地隐藏了除最后一个信息之外的任何文件存储信息。

最新更新