如题,我知道获取文件的大小是用File.length(),那获取一个目录的大小用什么方法呢?用这个返回的都是0字节。

解决方案 »

  1.   

    File类既可以指向file,,也可以指向directory
    File.isDirectory()
              Tests whether the file denoted by this abstract pathname is a directory.然后getSize即可参见java在线文档 关于File类的说明
      

  2.   

    import java.io.File;
    public class Text{
    public static void main(String [] args){
    File file=new File("c:\\temp");
    if(file.isDirectory()){
    System.out.println ("文件夹");
    System.out.println (file.length());
    //取得所有的子文件,假设只有一级目录,如果目录下还有目录就需要用递归得到所有目录下的所有文件
    File [] subfile=file.listFiles();
    long totalSize=0;
    for (int i = 0; i<subfile.length; i++) {
    totalSize+=subfile[i].length();
        }
        System.out.println ("该目录的总大小为:"+totalSize);
    }
    }
    }
      

  3.   

    回“congliu”:File.isDirectory()这个我知道,而且也一直在用。但是找不到你说的那个getSize方法,能不能给个示例。回“adinath”:对,就是要获得目录下所有文件大小的总和,请问能不能帮下忙。回“adinath”:我既然知道如何取得文件的大小当然也知道你说的这种方法,但是我如果这样做的话可能客户不太愿意,如果像这样的话,如果我要知道C盘所占用空间的大小,浪费系统资源不说可能需要睡一觉起来系统才能统计完。期待高手
      

  4.   

    import java.io.*;public class GetFolderSize{ public static long getSize(File folder)
    {
    long folderSize = 0;

    if (folder.isDirectory()) 
    {
    File[] filelist = folder.listFiles();
    for (int i=0;i<filelist.length;i++)
    folderSize = folderSize + getSize(filelist[i]);
    return folderSize;
    }
    else
    return folder.length(); 
    }  public static void main(String args[]){      
    File f = new File ("d:\\temp\\org\\");
    System.out.println(getSize(f));
    }
    }
      

  5.   

    没有人能解决?难道Java没有这个功能吗?
      

  6.   

    回CrazyGou:首先先向你致歉,不知道什么地方得罪你了。我想知道谁跟我说明白了。从“adinath”以上的我已经回复过了。如果你有一点知识的话你也知道“zebra007(呼呼)”说的方法跟“adinath”说的其实是一种方法。我要做的是系统,不是为了考试,随便写一个东西出来就算了“zebra007(呼呼)”兄也说了,他的那个统计C盘要一分钟,我做的是一个服务器的文件管理系统,不知道他的硬盘是多大的,我做的是一个800G的服务器,以此来算光打开我的电脑就应该是20来分,请问这样的程序给你你要吗?
      

  7.   

    如果你的文件目录不是很深,文件大都比较大的话。用这个方法也不一定很慢
    需要说明是,前面的方法是统计目录下所有文件的大小的总和,而不是其占用硬盘空间的大小。做这种工作本来就不是java的强项。也可以考虑用c编写,java调用另外一种思路是你已知文件夹中所有文件大小,当添加文件时加上其大小,反之亦然。