WEB开发网
开发学院WEB开发Jsp Java编程获取硬盘空间 阅读

Java编程获取硬盘空间

 2008-01-05 19:17:06 来源:WEB开发网   
核心提示:因为论坛有人问到这个问题,所以就写了这篇文章,Java编程获取硬盘空间,希望对大家有所帮助,一般来讲,要用java得到硬盘空间,有3种方法:1. 调用system的command,然后分析得到的结果,这种方法有很强的系统依靠性,linux下和win下要分别写程序

  因为论坛有人问到这个问题,所以就写了这篇文章。希望对大家有所帮助。

  一般来讲,要用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;
  }
 }


Tags:Java 编程 获取

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接