栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

递归遍历文件夹,获取文件夹中各类文件的个数

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

递归遍历文件夹,获取文件夹中各类文件的个数

功能需求:

指定一个文件夹,获取文件夹中各类文件的个数,并输出打印在控制台

思路分析

因为不确定文件夹的个数,所以采用递归调用的方式。

示例代码

package FIle;

import java.io.File;
import java.util.HashMap;
import java.util.Map;

//  统计一个文件夹中文件的个数并打印
public class Test3 {
    public static void main(String[] args) {
//        1.创建文件对象,指定要查找的文件夹
        File file = new File("day11");
//        2.定义一个Map集合,用来存储后缀名(key)和出现的数量(value)
        Map map = new HashMap<>();
//        3.调用方法
        getCount(map,file);
//        4.输出map集合
        System.out.println(map);
    }

    private static void getCount(Map map, File file) {
//        防止出现空指针异常,因为文件不能listFile,并且有权限的文件夹也不允许使用listFile,会返回null
        if(!file.isDirectory()){
            System.out.println(file+"不存在或者不是文件夹");
            return;
        }
//        获取文件列表数组
        File[] listFiles = file.listFiles();
//        增强for遍历
        for (File listFile : listFiles) {
//           判断listFile是否是文件夹,如果是,递归
            if(listFile.isDirectory()){
                getCount(map,listFile);
//                如果不是,切割,获取文件后缀名
            }else{
                String[] split = listFile.getName().split("\.");
                String fileEndName = split[split.length-1];     //这里必须要length-1,否则会数组越界
//                判断文件后缀名在集合中是否存在
                if(map.containsKey(fileEndName)){
//                    存在,加一
                    Integer count = map.get(fileEndName);
                    count++;
                    map.put(fileEndName,count);
                }else{
//                    不存在,直接存入集合
                    map.put(fileEndName,1);
                }

            }
        }
    }
}

运行结果

小白总结

初次学习IO流,能够掌握File类对象的使用确实有些困难,再加上递归的使用,非常容易遗忘,特此记录,如果不足之处,还请路过的有缘人批评指正,谢谢。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/705066.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号