package h05;
import java.io.File;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
/*
* 键盘录入一个文件夹路径,统计该文件夹(包含子文件夹)中每种类型的文件及个数,注意:用文件类型(后缀名,不包含.(点),如:"java","txt")作为key,
用个数作为value,放入到map集合中,并用两种方式遍历map集合
例如:
doc 的类型的文件有 3 个
java 的类型的文件有 5 个
txt 的类型的文件有 7 个
* */
public class Demoh05 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Map<String, Integer> map1 = new HashMap<String, Integer>();
File file = new File(sc.nextLine());
chazhao(file, map1);
//利用set进行遍历
Set<String>set = map1.keySet();
Iterator<String> it = set.iterator();
while(it.hasNext()) {
String s = it.next();
int l = map1.get(s);
System.out.println(s + "..." + l);
}
}
public static void chazhao(File file, Map<String, Integer> map1) {
File[] f1 = file.listFiles();
if(f1.length == 0) {
return;
}
for(File f2:f1) {
if(f2.isDirectory()) {
chazhao(f2, map1);
}else {
//利用map的重复性将个数加1
if(map1.containsKey(mytypeOf(f2.toString()))) {
map1.put(mytypeOf(f2.toString()), map1.get(mytypeOf(f2.toString())) + 1);
}else {
map1.put(mytypeOf(f2.toString()), 1);
}
}
}
}
public static String mytypeOf(String str) {
if(str.contains(".")) { //文件中可能包含沒有.后綴的未知文件,避免異常
return str.substring(str.lastIndexOf("."));
}
return "未知文件";
}
}