package cn.demo22;
import java.io.File;
import java.util.HashMap;
import java.util.Scanner;
import java.util.Set;
/*
* 5.键盘录入一个文件夹路径,统计该文件夹(包含子文件夹)中每种类型的文件及个数,注意:用文件类型(后缀名,不包含.(点),如:"java","txt")作为key,
用个数作为value,放入到map集合中,并用两种方式遍历map集合
例如:
doc 的类型的文件有 3 个
java 的类型的文件有 5 个
txt 的类型的文件有 7 个
*/
public class Filed {
public static void main(String[] args) {
HashMap<String , Integer> map1 = new HashMap<String, Integer>();
File file = new File("D:\\新建文件夹");
HashMap<String , Integer> map = sum(map1,file);
bianl(map);
}
/*
* 遍历maps
*/
public static void bianl(HashMap<String , Integer> map){
Set<String> mapsarr = map.keySet();
for(String s : mapsarr){
System.out.println(s+ "类型有"+map.get(s));
}
}
/* hashmap对象,
* 统计该文件夹(包含子文件夹)中每种类型的文件及个数
* 文件数组
* 遍历
* 判断dir 是 递归 否 判断文件类型
* 有此类型 map.put修改该类型key所对应的值value
* 无此类型 map.put(key,1)
*
*
*/
public static HashMap<String , Integer> sum(HashMap<String, Integer> map,File file){
File[] farr = file.listFiles();
Set<String> s = map.keySet();
for(File f : farr){
int index = f.getName().lastIndexOf(".");
String key = f.getName().substring(index + 1);
if(f.isDirectory()){
sum(map,f);
}
//寻找最后一次出现的. 切割得到文件类型
//用文件类型和map中的key值比较
else if(!map.containsKey(key)){
//没有就添加key 值为1️
map.put(key, 1);
System.out.println(f);
}else{
//有就在原基础上加一
int count = map.get(key) + 1;
map.put(key, count);
System.out.println(f);
}
}
return map;
}
/*
* Scanner
*/
public static String dir() {
System.out.println(" please");
Scanner sc = new Scanner(System.in);
String s = sc.next();
return s;
}
}
键盘录入一个文件夹路径,统计该文件夹(包含子文件夹)中每种类型的文件及个数,注意:用文件类型(后缀名,不包含.(点),如:"java","txt")作为key, 用个数作为value,放入到map集
最新推荐文章于 2020-08-06 12:56:33 发布