How to get free disk space in Java
Published: August 23, 2010 , Updated: August 23, 2010 , Author: mkyong
In Java old days, it lacks of method to determine the free disk space on a partition. But this is changed since JDK 1.6 released, a few new methods – getTotalSpace(), getUsableSpace() and getFreeSpace(), are bundled with java.io.File to retrieve the partition or disk space detail.
Example
package com.mkyong; 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"); } }
Output
Display the disk space detail in c: partition.
=== 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
Both getFreeSpace() and getUsableSpace() methods are return the same total free disk space of a given partition. But the real different is not clear, even in the java doc. Tell me if you know what’s the different in between.
Both getFreeSpace() and getUsableSpace() methods are return the same total free disk space of a given partition. But the real different is not clear, even in the java doc. Tell me if you know what’s the different in between.
Reference
http://download.oracle.com/javase/6/docs/api/java/io/File.html







The difference what I understood between getFreeSpace() and getUsableSpace() is
getFreeSpace() will give the actual space that is free in the partition.
getUsableSpace() will give the free space available to the JVM at that time(may be due to user level restrictions or some other restrictions at OS level, JVM will not have the full access to all the Free space in the partition)
Buen aporte :)
Google translated from Spanish to English : good contribution
Thanks
This is my first time i visit here; I found so many useful stuff in your website especially its discussion! From the a lot of comments on your articles. I guess Im not the only one receiving the many satisfaction right here! keep up a good job.
Unix filesystem reserves some percent of space for root-user. getFreeSpace() returns total free space available and getUsableSpace() returns amount of free space available to current user.
Thanks for your additional information.