如题!
File类可以查看文件大小,但是调用哪个方法可以查看磁盘剩余空间呢?

解决方案 »

  1.   

    有个插件
    http://tolstoy.com/samizdat/jconfig.html
      

  2.   

    下面是一个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]));
       }
      }
     }
    }
       方法二:使用Jconfig,可以跨平台  从http://www.tolstoy.com/samizdat/jconfig.html上下载jconfig。  下载的包的sample里有很简单的例子,如果是要得到磁盘空间的话:  用FileRegistry.getVolumes()得到DiskVolume。  然后call getFreeSpace()和getMaxCapacity()。  就是这么简单。  方法三:jni  这个是解决所有和os相关的操作的万能利器了。  例子我也懒得写了。  写一个dll然后call之即可。