龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > JAVA开发 >

Java编程获取硬盘空间

时间:2009-12-23 15:42来源:未知 作者:admin 点击:
分享到:
因为论坛有人问到这个问题,所以就写了这篇文章。希望对大家有所帮助。 一般来讲,要用Java得到硬盘空间,有3种方法: 1. 调用system的command,然后分析得到的结果,这种方法有很强的系统依

  因为论坛有人问到这个问题,所以就写了这篇文章。希望对大家有所帮助。
  
  一般来讲,要用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;
  }
   }

  
  

精彩图集

赞助商链接