Welcome

首页 / 软件开发 / JAVA / Java编程获取硬盘空间

Java编程获取硬盘空间2010-12-06因为论坛有人问到这个问题,所以就写了这篇文章。希望对大家有所帮助。

一般来讲,要用java得到硬盘空间,有3种方法:

1. 调用system的command,然后分析得到的结果,这种方法有很强的系统依赖性,linux下和win下要分别写程序。

下面是一个win下的例子,编译成功之后,运行java Diskspace yourdir(比如c:)

import java.io.BufferedReader;import java.io.InputStreamReader; /*** Determine free disk space for a given directory by * parsing the output of the dir command.* This class is inspired by the code at* Works only under Windows under certain circumstances.* Yes, it"s that shaky.* Requires Java 1.4 or higher.* @[EMAIL PROTECTED] *Marco Schmidt*/public class Diskspace{ private Diskspace() {  // prevent instantiation of this class }/*** Return available free disk space for a directory.* @[EMAIL PROTECTED]dirName name of the directory* @[EMAIL PROTECTED]free disk space in bytes or -1 if unknown*/ public static long getFreeDiskSpace(String dirName) {  try  {   // guess correct "dir" command by looking at the    // operating system name   String os = System.getProperty("os.name");   String command;   if (os.equals("Windows NT") ||os.equals("Windows 2000"))   {    command = "cmd.exe /c dir " + dirName;   }   else   {    command = "command.com /c dir " + dirName;   }   // run the dir command on the argument directory name   Runtime runtime = Runtime.getRuntime();   Process process = null;   process = runtime.exec(command);   if (process == null)   {    return -1;   }   // read the output of the dir command   // only the last line is of interest    BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream()));   String line;   String freeSpace = null;   while ((line = in.readLine()) != null)   {    freeSpace = line;   }   if (freeSpace == null)   {    return -1;   }   process.destroy();   // remove dots & commas & leading and trailing whitespace   freeSpace = freeSpace.trim();   freeSpace = freeSpace.replaceAll("\.", "");   freeSpace = freeSpace.replaceAll(",", "");   String[] items = freeSpace.split(" ");   // the first valid numeric value in items after(!) index 0   // is probably the free disk space   int index = 1;   while (index < items.length)   {    try    {     long bytes = Long.parseLong(items[index++]);     return bytes;    }    catch (NumberFormatException nfe)    {    }   }   return -1;  }  catch (Exception exception)  {    return -1;  }  }/*** Command line program to print the free diskspace to stdout* for all 26 potential root directories A: to Z:* (when no parameters are given to this program)* or for those directories (drives) specified as parameters.* @[EMAIL PROTECTED]args program parameters*/ public static void main(String[] args) {  if (args.length == 0)  {   for (char c = "A"; c <= "Z"; c++)   {    String dirName = c + ":\";    System.out.println(dirName + " " +    getFreeDiskSpace(dirName));   }  }  else  {   for (int i = 0; i < args.length; i++)   {    System.out.println(args[i] + " " + getFreeDiskSpace(args[i]));   }  } }}