Как получить свободное место на диске в Java

Как получить свободное место на диске в Java

В старые времена Java не хватало метода для определения свободного дискового пространства в разделе. Но это изменилось с момента выпуска JDK 1.6, несколько новых методов -getTotalSpace(),getUsableSpace() иgetFreeSpace() - связаны с java.io.File для получения информации о разделе или дисковом пространстве.

пример

package com.example;

import java.io.File;

public class DiskSpaceDetail
{
    public static void main(String[] args)
    {
        File file = new File("c:");
        long totalSpace = file.getTotalSpace(); //total disk space in bytes.
        long usableSpace = file.getUsableSpace(); ///unallocated / free disk space in bytes.
        long freeSpace = file.getFreeSpace(); //unallocated / free disk space in bytes.

        System.out.println(" === Partition Detail ===");

        System.out.println(" === bytes ===");
        System.out.println("Total size : " + totalSpace + " bytes");
        System.out.println("Space free : " + usableSpace + " bytes");
        System.out.println("Space free : " + freeSpace + " bytes");

        System.out.println(" === mega bytes ===");
        System.out.println("Total size : " + totalSpace /1024 /1024 + " mb");
        System.out.println("Space free : " + usableSpace /1024 /1024 + " mb");
        System.out.println("Space free : " + freeSpace /1024 /1024 + " mb");
    }
}

Выход

Показать детали дискового пространства в разделеc:.

 === Partition Detail ===

 === bytes ===
Total size : 52428795904 bytes
Space free : 33677811712 bytes
Space free : 33677811712 bytes
 === mega bytes ===
Total size : 49999 mb
Space free : 32117 mb
Space free : 32117 mb

Note
Оба методаgetFreeSpace() иgetUsableSpace() возвращают одинаковое общее свободное место на диске данного раздела. Но настоящая разница не ясна даже в java-документе. Скажите, знаете ли вы, в чем разница между ними.