import java.util.*;
import java.io.*;
public class DiskStorage {
//declare the default calculation – byte conversion
private static final long KILOBYTE = 1024;
private static final long MEGABYTE = 1024 * 1024;
private static final long GIGABYTE = 1024 * 1024 * 1024;
public static long getFreeSpace(String path) throws Exception
{
if (System.getProperty(“os.name”).startsWith(“Windows”))
{
return getFreeSpaceOnWindows(path);
}
if (System.getProperty(“os.name”).startsWith(“Linux”))
{
return getFreeSpaceOnLinux(path);
}
throw new UnsupportedOperationException
(“The method has not been implemented for this operating system.”);
}
private static long getFreeSpaceOnWindows(String path) throws Exception
{
long bytesFree = -1;
File script = new File(System.getProperty(“java.io.tmpdir”),”script.bat”);
PrintWriter writer = new PrintWriter(new FileWriter(script, false));
writer.println(“dir \”" + path + “\”");
writer.close();
Process p = Runtime.getRuntime().exec(script.getAbsolutePath());
InputStream reader = new BufferedInputStream(p.getInputStream());
StringBuffer buffer = new StringBuffer();
for (; ; )
{
int c = reader.read();
if (c == -1)
break;
buffer.append( (char) c);
}
String outputText = buffer.toString();
reader.close();
StringTokenizer tokenizer = new StringTokenizer(outputText, “\n”);
while (tokenizer.hasMoreTokens())
{
String line = tokenizer.nextToken().trim();
if (line.endsWith(“bytes free”))
{
tokenizer = new StringTokenizer(line, ” “);
tokenizer.nextToken();
tokenizer.nextToken();
bytesFree = Long.parseLong(tokenizer.nextToken().replaceAll(“,”, “”));
}
}
return bytesFree;
}
private static long getFreeSpaceOnLinux(String path) throws Exception
{
long bytesFree = -1;
Process p = Runtime.getRuntime().exec(“df ” + “/” + path);
InputStream reader = new BufferedInputStream(p.getInputStream());
StringBuffer buffer = new StringBuffer();
for (; ; )
{
int c = reader.read();
if (c == -1)
break;
buffer.append( (char) c);
}
String outputText = buffer.toString();
reader.close();
StringTokenizer tokenizer = new StringTokenizer(outputText, “\n”);
tokenizer.nextToken();
if(tokenizer.hasMoreTokens())
{
String line2 = tokenizer.nextToken();
StringTokenizer tokenizer2 = new StringTokenizer(line2, ” “);
if(tokenizer2.countTokens()>=4)
{
tokenizer2.nextToken();
tokenizer2.nextToken();
tokenizer2.nextToken();
bytesFree = Long.parseLong(tokenizer2.nextToken());
return bytesFree;
}
return bytesFree;
}
throw new Exception(“Can not read the free space of ” + path + ” path”);
}
public static void main(String args[])
{
try
{
System.out.println(“Free space of /: ” + getFreeSpace(“C:\\”));
long test = getFreeSpace(“C:\\”);
System.out.println(“===========KB” + test/KILOBYTE);
System.out.println(“===========MB” + test/MEGABYTE);
System.out.println(“===========GB” + test/GIGABYTE);
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
}