需求:
/*
* 输入一个文件夹路径 用map记录文件类型出现的次数
*
* txt 数量
* java 数量
* png 数量
* ....
*/
import java.io.File;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Set;
public class Kll {
public static void main(String[] args) {
// 创建map对象
HashMap<String, Integer> map = new HashMap<>();
// 创建文件对象
File file = new File("/Users/lanou/Desktop/Test");
getMap(file, map);
System.out.println(map);
}
// 获取类型并装入集合的方法
public static void getMap(File file, HashMap<String, Integer> map) {
// 获取给出目录下的一级目录文件
File[] files = file.listFiles();
// 遍历文件数组
for (File subFile : files) {
// 判断
if (subFile.isFile()) {
// 是文件
// 获取名字并按点切割
String[] split = subFile.getName().split("\\.");
// 最后一个元素是文件类型,也是map的key值
String key = split[split.length - 1];
// 判断文件类型是否包含在map中
if (map.containsKey(key)) {
// 包含时,取出加一
Integer value = map.get(key);
value++;
// 再放回map中
map.put(key, value);
}else {
// 不包含时,放入
map.put(key, 1);
}
}else {
// 是文件夹,递归调用
getMap(subFile, map);
}
}
}
}
运行结果: