java统计某个路径下所有的文件,并统计每种文件的个数。

思路:
遍历到所有的文件路径名
存入到集合中
遍历集合,拿到各种文件的后缀名,存入set集合
遍历set集合,统计各种后缀名出现的次数

import java.io.File;
import java.util.*;

public class T_统计文件夹各个后缀的个数 {



    static TreeSet<String> pathtTail=new TreeSet<>();
    static TreeMap<String, Integer> map = new TreeMap<>();
    static ArrayList<String> allPath=new ArrayList<>();
    public static void main(String[] args) {

        System.out.println("请稍等");
        File path = new File("D:/");
        getAllPath(path);       //得到所有路径
        System.out.println("以得到所有路径.....\n\n");
        getPathTail();
        System.out.println("yi获取所有不同的文件类型的后缀......\n\n");
        resout();
        System.out.println("已经获取所有后缀的个数,放入map中......\n\n");

        //查询map键值对
        while (true) {

            if ("end".equals(chaxun())) {
                break;
            }
        }

        //prin();

    }

    private static void prin() {
        for (String s : map.keySet()) {
            System.out.println(s + " " + map.get(s));
        }
    }

    //查询用户指定的文件类型的个数。
    private static String chaxun() {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入需要查询的后缀名称:");
        String s = sc.nextLine();
        if (map.keySet().contains(s)) {
            int i = map.get(s);
            System.out.println(s+"类型的文件有"+i+"个");
        }else{
            System.out.println("你输入的文件类型不存在");
        }

        return s;


    }

    //遍历TreeSet集合并统计集合里每个文件类型的个数
    //把结果存入map集合里,供用户查询
    private static void resout() {
        int i = 0 ;
        for (String s : pathtTail) {
            for (String s1 : allPath) {
                if (s1.endsWith(s)) {
                    i++;
                }
            }
            map.put(s,i);

        }
    }

    //此功能遍历allpath集合,并把string对象拆分,取到所有的文件类型
    //并存储到TreeSet集合里
    private static  void getPathTail() {
        for (String s : allPath) {
            String[] split = s.split("\\.");
            if (split.length>1) {
                pathtTail.add(split[split.length-1]);
            }
        }

    }
    //递归遍历到文件夹下所有的文件,并存储到ArrayList数组内
    private static  void getAllPath(File path) {
        if (path.exists()) {			//判断路径是否存在
        
            if (path.isFile()) {			//判断是不是文件,是的话,得到其文件名。不是的话,就是目录								
                allPath.add(path.getName());
            }else{										
                File[] files = path.listFiles();			//得到目录下所有的Fiel列表
                if (files.length!=0) {						//如果目录列表不为零,递归操作此列表里所有路径
                    for (File file : files) {
                        getAllPath(file);
                    }
                }



            }
        }else{
            System.out.println("文件路径不存在");
        }
    }
}
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值