day23 Java学习 File类递归练习

 File类递归练习(统计文件夹大小)

     

public static void main(String[] args) {
        //需求:从键盘接收一个文件夹路径,统计该文件夹大小
        File dir=getDir();
        System.out.println(getFileLength(dir));

    }
          /*从键盘接收一个文件夹路径:*/
    public static File getDir() {
        // 1.创建键盘录入对象
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个文件夹路径");
        // 2.定义一个无限循环
        while (true) {
            String line = sc.nextLine();
            // 3.将录入结果存储并封装成File对象
            File dir = new File(line);
            if (!dir.exists()) {
                System.out.println("录入的文件夹路径不存在,请从新输入:");
            } else if (dir.isFile()) {
                System.out.println("你录入的是文件路径,请从新输入:");
            } else {
                //5.将文件夹路径对象返回
                return dir;
            }
        }
          
        
    }
    
    public static long getFileLength(File dir) {
        //1.定义一个求和对象
        long len=0;
        //2.获取该文件夹下的所有文件和文件夹listFile()
        File [] subFiles =dir.listFiles();
        //3.遍历数组
        for (File subFile : subFiles) {
            //4.判断是文件就计算大小并累加
        if (subFile.isFile()) {
            len=len+subFile.length();
            //5.判断是文件夹,递归调用
        }else  {
            len=len+getFileLength(subFile);
        }

        }
        return len;
        
    }

猜你喜欢

转载自www.cnblogs.com/feng0001/p/10971094.html