现我有路径“D:\游戏”,请教朋友3个问题:
1.如何获取“游戏”文件夹的总大小(“游戏”文件夹下有多个多级目录)?
2.如何获取“游戏”目录下某个文件夹里的文件数目及总大小,如:D:\游戏\快捷登录?
3.如何判断文件名是否为数字?

解决方案 »

  1.   

    1.遍历文件夹,调用File对象的length(),把文件夹里文件的大小加起来;
    2.同1,记录下遍历的次数就是文件的个数;
    3.getName()方法,取得文件夹的名字,采用正则表达式判断文件名是否为中文;
    (正则的写法google下)我先给你个( "[\u4e00-\u9fa5]+"    匹配汉字)
      

  2.   

    遍历循环,然后用file的getName取得文件名,然后在调用file的getpath方法,然后判断getpath得到是文件还是目录,这要用file的isdirectory()方法判断,如果是目录继续取得下一级文件的路径,然后继续判断是否是目录,循环至到得到的文件是最底层的,就ok了
      

  3.   

       先给你解决的思路,你自己去实现代码:1,递归遍历文件夹,把每个文件的大小相加。2,递归遍历指定文件夹,判断每个File对象是不是文件,是的话就把数目++,当然,文件大小也累加。3,要是你能肯定文件名不超过9位数字,那就这样: String fileName="1212121";
     try {
    Integer.parseInt(fileName);
    } catch (NumberFormatException e) {
    System.out.println("文件名不是数字!");
    return;
    }
    System.out.println("OK");
      

  4.   

    前面两个问题:import java.io.File;
    public class CalcFile{

    static int fileNum = 0;
    static int dirNum = 0;

    public static void main( String[] args ) {
    long length = getFileLength(new File("E:\\游戏"));
    System.out.println("文件夹总大小: "+ (float)length/1024/1024/1024 + "GB");
    System.out.println("共有目录: "+ dirNum + "个");
    System.out.println("共有文件: "+ fileNum + "个");
    }

    public static long getFileLength(File file) {
    if( !file.exists() ) return 0;
    if(file.isDirectory()) {
    dirNum++;
    long l = 0;
    for(File f:file.listFiles()) {
    l += getFileLength(f);
    }
    return l;
    }else {
    fileNum ++;
    return file.length();
    }
    }
    }
    至于判断数字问题当然是用正则表达式,效率高些嘛public class Test
    {
    public static void main(String[] args)
    {
    Pattern p = Pattern.compile( "\\d+" );
    String s = "123456.f";//有扩展名要把扩展名截掉,否则不通过
    System.out.println(p.matcher( s ).matches());
    }
    }