首页 > 其他 > 详细

统计文件夹中每个类型的文件的个数

时间:2020-06-13 21:55:46      阅读:51      评论:0      收藏:0      [点我收藏+]

统计文件夹中每个类型的文件的个数

问题描述:

键盘录入一个文件夹路径,统计该文件夹(包含子文件夹)中每种类型的文件及个数

注意:用文件类型(后缀名,不包含.(点),如:"java","txt")作为key,

用个数作为value,放入到map集合中,并用两种方式遍历map集合

例如:

doc 的类型的文件有 3 个

java 的类型的文件有 5 个

txt 的类型的文件有 7 个

自己的代码(参考答案): [文件素材全是本地E盘的abc文件夹]

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

public class Test08 {
    public static void main(String[] args) {
        HashMap<String, Integer> map = new HashMap<>();
        getFileType(new File("E:/abc"),map);
        map.forEach((K,V)->{
            System.out.println(K+":"+V);
        });
    }

    private static void getFileType(File dir, HashMap<String, Integer> map) {

        if(dir.isDirectory()){
            //如果是文件夹
            File[] files = dir.listFiles();
            for (File file : files) {
                getFileType(file,map);
            }
        } else {
            //获得文件名
            String fileName = dir.getName().toLowerCase();
            String[] split = fileName.split("\\.");
            String key = split[1];
            //判断map是否有该key存在
            if(map.containsKey(key)){
                //存在
                map.put(key,map.get(key)+1);
            }else {
                //不存在
                map.put(key,1);
            }
        }
    }

}
/*
打印结果:
txt:4
pdf:4
java:5
avi:1
*/

答案代码:

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

public class Test03_03 {
    public static void main(String[] args) {
        File dir = inputFile();
        // 创建map集合
        Map<String,Integer> map = new HashMap<String, Integer>();
        getFileType(dir,map);
        // 遍历map
        for(Map.Entry<String,Integer> entry:map.entrySet()) {
            System.out.println(entry.getKey() + " 类型的文件有 " + entry.getValue() + " 个 ");
        }
    }

    public static void getFileType(File f,Map<String,Integer> map) {
        if(f.isDirectory()) {
            File files[] = f.listFiles();
            for (File file : files) {
                getFileType(file,map);
            }
        } else {
            // 获得文件名
            String fileName = f.getName(); // aaa.txt
            // 获得文件扩展名
            String key = fileName.substring(fileName.lastIndexOf(".") + 1); // txt
            // 判断map是否包含key
            if(map.containsKey(key)){
                map.put(key, map.get(key) + 1); // txt 2
            } else {
                map.put(key, 1); // txt  1
            }
        }
    }

    /*
     * 根据用户输入的路径字符串创建文件对象
     */
    private static File inputFile() {
        // 创建键盘输入对象
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个文件夹路径:");
        // 接收用户输入的路径
        String filePath = sc.nextLine();
        // 根据路径字符串创建文件对象
        File dir = new File(filePath);
        if(!dir.exists()) throw new RuntimeException("你输入的文件路径不存在!!!");
        // 判断是否是文件夹
        if(!dir.isDirectory()){
            throw new RuntimeException("输入的路径不是文件夹路径!!!");
        }
        return dir;
    }
}

统计文件夹中每个类型的文件的个数

原文:https://www.cnblogs.com/liqiliang1437/p/13121782.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!