Java中递归调用找到指定目录下的所有的.Java文件,打印文件名到控制台,并统计出这些文件的总大小

代码:

import java.io.File;

public class Demo {
    public static void main(String[] args) {
        //创建文件目录
        File file = new File("d:\\aa");
        //调用方法打印所有的Java文件名
        printFileName(file);
        //调用方法得到指定目录下所有的Java文件的大小
        long lenth = fileLenth(file);
        System.out.println(file.getName()+"目录下所有的Java文件大小为: "+lenth);
    }
    //定义方法打印给定目录下的所有的Java文件,参数为文件的目录,返回值为空
    public static void printFileName(File file) {
        if (file.isDirectory() && file.exists()) {//参数file是目录并且存在
            //生成File数组
            File[] fileList = file.listFiles();
            //遍历集合
            for (File f : fileList) {
                if (f.isDirectory()) {//次元素是目录
                    printFileName(f);//递归调用
                }else {
                    if (f.getName().endsWith(".java")) {//如果是以.Java结尾
                        System.out.println(f.getName());//打印该文件的名字
                    }
                }
            }
        } else {
            System.out.println("您传入的参数无效");
        }
    }

    //定义方法求出给定目录下的所有Java文件的大小,参数为文件目录,返回值为文件的大小
    public static long fileLenth(File file) {
       long len = 0 ;//定义变量用来保存文件的大小
        if (file.exists() && file.isDirectory()) {
            //生成File[]集合
            File[] fileList = file.listFiles();
            for (File f : fileList) {//遍历文件集合
                if (f.isDirectory()) {//如果该文件是目录
                     len += fileLenth(f);//递归调用并且将所得的文件大小全部相加
                }else {
                    if (f.getName().endsWith(".java")) {//如果是Java文件
                     len += f.length();//将所有文件的大小相加
                    }
                }
            }
        }else {
            System.out.println("您传入的文件无效");
            return -1;
        }
        return len;
    }
}

控制台打印效果:

猜你喜欢

转载自blog.csdn.net/xilin6664/article/details/89046181