Java中利用递归计算文件夹下所有文件的总大小

需求描述:从键盘接收一个文件夹路径,获得该文件夹大小并输出到控制台。

代码实现:

import java.io.File;
import java.util.Scanner;

public class Demo934 {


    public static void main(String[] args) {
        //创建扫描器
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入您要查询的文件夹的绝对路径(格式为: 盘符:\\文件夹名\\子文件夹名...)");
        //定义变量保存用户输入的文件夹路径
        String path = sc.next();
        //调用方法
        long fileSize = getFileSize(path);
        System.out.println("您查询的"+path+"文件夹下的文件大小为"+(fileSize/1024/1024)+"MB");
    }

    //创建方法获取指定文件夹下的文件大小并将其打印出来,参数为文件夹绝对路径,返回值文件的大小
    public static long getFileSize(String file) {
        //创建文件对象
        File f = new File(file);
        if (f.exists() && f.isDirectory()) {//文件夹存在
            //获取文件夹的文件的集合
            File[] files = f.listFiles();
            long count =0;//用来保存文件的长度
            for (File file1 : files) {//遍历文件集合
                if (file1.isFile()) {//如果是文件
                    count += file1.length();//计算文件的长度
                } else {
                    count += getFileSize(file1.toString());//递归调用
                }

            }
            return count;
        }else {
            System.out.println("您查询的文件夹有误");
            return 0;
        }
    }

}

控制台运行效果:

Java中利用递归计算文件夹下所有文件的总大小_第1张图片

Java中利用递归计算文件夹下所有文件的总大小_第2张图片

你可能感兴趣的:(Java中利用递归计算文件夹下所有文件的总大小)