统计文件夹(包含子文件夹)中每种类型的文件及个数
2017-09-05 20:10
323 查看
package com.lxq; import java.io.File; import java.util.HashMap; import java.util.Map; import java.util.Scanner; import java.util.Set; /*
*分析以下需求,并用代码实现 键盘录入一个文件夹路径,统计该文件夹(包含子文件夹)中,每种类型的文件及个数, //获取该路径下所有文件(包含子文件夹) 注意:用文件类型(后缀名,不包含.,"java","txt")作为key,用个数作为value,放入到map集合中,并按照如下格式打印map集合中的内容 docx类型的文件有 1 个 java类型的文件有 24 个 txt类型的文件有 10 个 //... */ public class Demo1 { public static void main(String[] args) { //创建键盘录入对象 Scanner sc = new Scanner(System.in); //提示: System.out.println("请输入一个你想查询的路径:"); String path = sc.nextLine(); //File的构造方法. 根据传入的String路径转换成为File类型的对象 File file = new File(path); //创建集合对象 HashMap<String, Integer> map = new HashMap<String, Integer>(); //获取了所有文件夹下的后缀名和出现次数 map中就有了数据 getFileName(file, map); //遍历map集合 Set<Map.Entry<String, Integer>> entrys = map.entrySet(); //得到键值对对象的集合 遍历set集合得到每一个键值对对象 for (Map.Entry<String, Integer> entry : entrys) { //获得了每一个键值对对象后 可以获取单个键值对的具体值 String fileHouZui = entry.getKey(); Integer num = entry.getValue(); //输出结果 docx类型的文件有 1 个 System.out.println(fileHouZui + "类型的文件有"+num+"个"); } } public static void getFileName(File file,HashMap<String, Integer> map){ //获取所有文件 //判断文件是否是一个文件夹 if (file.isDirectory()) { //获取文件夹的文件数组 File[] files = file.listFiles(); //遍历文件数组 for (File f : files) { //f是一个文件 if (f.isFile()) { //获取这个文件的文件名 String filename = f.getName(); //切割文件名 String[] split = filename.split("\\."); //获取后缀名 String houZui = split[split.length - 1]; //添加到集合中去 //做判断集合中是否出现过同名后缀 if (map.get(houZui) == null) { //添加新的后缀 map.put(houZui, 1); } else { //若出现过的后缀先获取他出现的次数再让他的次数+1 Integer integer = map.get(houZui); integer++; //从新添加 map.put(houZui, integer); } } else {//f是一个文件夹 //递归 有一个获取文件夹所有文件的方法 并获取他的后缀名 getFileName(f,map); } } } else { //获取文件名 String filename = file.getName(); //以.来切割文件名 获得文件的后缀(文件的类型) Demo.java [Demo,java] String[] split = filename.split("\\."); String houZui = split[split.length - 1]; //判断map集合中是否有重复的后缀 if (map.get(houZui) == null) { //若没有重复的key 说明这是第一次出现的后缀名 把这个后缀名添加到map集合中去 并给他的值赋值为1 map.put(houZui, 1); } else { //根据map集合的键(文件的后缀名)找值(后缀名出现的次数) Integer integer = map.get(houZui); //找到值(文件后缀名出现的次数) 自增一次 integer++; //把新的次数重新添加到集合中去 map.put(houZui, integer); } } } }
相关文章推荐
- 键盘录入一个文件夹路径,统计该文件夹(包含子文件夹)中每种类型的文件及个数,注意:用文件类型(后缀名,不包含.(点),如:"java","txt")作为key, 用个数作为value,放入到map集
- 统计该文件夹(包含子文件夹)中,每种类型的文件及个数
- 键盘录入一个文件夹路径,统计该文件夹(包含子文件夹)中每种类型的文件及个数,注意:用文件类型(后缀名,不包含.(点),如:"java","txt")作为key
- 键盘录入一个文件夹路径,统计该文件夹(包含子文件夹)中每种类型的文件及个数
- BAT脚本求文件夹下面指定类型文件数量,包含子文件夹递归
- [置顶] 从键盘输入一个路径,统计该文件夹下制定扩展名文件的数量(其中文件夹下还包含子文件夹)
- Java读取文件夹下的指定类型的文件 递归筛选 包含子文件夹
- Java读取文件夹下的指定类型的文件(包含子文件夹)
- 使用回调函数的方式 删除包含子文件夹及文件的 文件夹,删除文件夹内指定类型的文件
- 收索文件夹及子文件夹下的txt,并统计txt文件的单词出现的个数
- EditPlus 替换所有文件夹下的文件包含子文件夹
- matlab遍历文件夹下指定类型的文件以及子文件夹
- C# 遍历读取某个目录文件夹下的不同类型子文件和其子文件夹(里面可能又有许多文件)
- java 统计文件夹下各类型文件个数
- java统计指定文件的大小以及包含的文件夹和文件数
- 统计文件夹内指定类型文件的代码行数(二)
- 扫描文件夹获取包含子文件夹在内的所有文件
- Python扫描指定文件夹下(包含子文件夹)的文件
- java删除整个文件夹或文件(无视是否包含子文件夹)
- shell 统计一个文件夹下不同类型文件的个数