递归思想的基础代码书写

键盘录入一个文件夹路径,统计该文件夹下的各种后缀名的文件的个数

  • 例如:.txt有10个,.java有30个…
  1. Scanner
  2. 递归
  3. 使用键值对 ==> 键是文件的后缀名 值 是个 HsahMap;
public class Test7_1 {

    private  static HashMap<String,Integer> map  = new HashMap<>();

    public static void main(String[] args) {
        Scanner input   = new Scanner(System.in);
        System.out.println("请输入你要统计的地址");
        String  path   = input.next();
        File  file  = new File(path);
        show(file);
        System.out.println(map);

    }


    // 递归文件的方法
    public   static     void     show(File file){

        // 第一步进行非null判断
        if(file !=null){
            // 判断是否是文件夹
            if(file.isDirectory()){
                //   获取下所有的文件
                File [] files =  file.listFiles();
                // 对数组进行非null验证
                if(files != null && files.length>0){
                    // 进行遍历
                    for(File f :files){
                        //  如果包含其.
                        if(f.getName().contains(".")){
                            //  截取.后面的文件后缀名
                            String   fileName = f.getName();
                            int index = fileName .lastIndexOf(".");
                            String prx = fileName.substring(index);
                            // 防map 有两种情况  第一种情况就是  如果不存在  直接放
                            // 如果 存在拿到上一次的数据+1
                            if(!map.containsKey(prx)){
                                map.put(prx,1);
                            }else{
                                map.put(prx,map.get(prx)+1);
                            }

                        }
                        // 进行递归
                        show(f);

                    }


                }
            }

        }
    }


}

键盘录入一个文件夹路径,统计该文件夹的大小

public class Test7_2{
    public  static   int  sum;

    public static void main(String[] args) {
        showInfo(new File("D:\\小电影2"));
        System.out.println(sum);
    }

    public  static         void   showInfo(File file){
        if(file !=null){
            if(file.isDirectory()){
                // 获取这个文件夹下是所有的文件
                File []  files =    file.listFiles();
                if(files !=null && files.length>0){
                    for(File f : files){
                        //获取文件长度的大写
                        sum+=f.length();
                        showInfo(f);
                    }
                }
            }
        }

  }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值