如题,重谢

解决方案 »

  1.   

    一般来讲,要用java得到硬盘空间,有3种方法: 1. 调用system的command,然后分析得到的结果,这种方法有很强的系统依赖性,linux下和win下要分别写程序 下面是一个win下的例子,编译成功之后,运行java Diskspace yourdir(比如c:\) <CCID_NOBR> <CCID_CODE>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]));
    }
    }
    }
    }</CCID_CODE>
     
    </CCID_NOBR>
      

  2.   

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