package 作业09;
import java.io.File;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Scanner;
import java.util.Set;
public class Test00 {
/*
* 分析以下需求,并用代码实现 键盘录入一个文件夹路径,统计该文件夹(包含子文件夹)中,每种类型的文件及个数
* 注意:用文件类型(后缀名,不包含.,"java","txt")作为key,用个数作为value,放入到map集合中,
* 并按照如下格式打印map集合中的内容
*
* docx类型的文件有 1 个 java类型的文件有 24 个 txt类型的文件有 10 个 //...
*/
public static void main(String[] args) {
System.out.println("输入一个文件路径:");
Scanner sc = new Scanner(System.in);
String Dir = sc.nextLine();
File f = new File(Dir);
// 新建一个Map集合
Map<String, Integer> map = new HashMap<String, Integer>();
getFileTypeCount(f, map);
//遍历map
Set<Entry<String, Integer>> entrySet = map.entrySet();
for (Entry<String, Integer> entry : entrySet) {
String key = entry.getKey();
Integer value = entry.getValue();
System.out.println(key+" = "+value);
}
}
public static void getFileTypeCount(File dir, Map<String, Integer> map) {
// 获取dir目录下的所有文件和文件夹
File[] files = dir.listFiles();
// 遍历对象数组
for (File file : files) {
if (file.isFile()) {
int index = file.getName().lastIndexOf(".");
String str = file.getName().substring(index + 1);
map.put(str, map.get(str) == null ? 1 : map.get(str) + 1);
} else if (file.isDirectory()) {
getFileTypeCount(file, map);
}
}
}
}
统计该文件夹(包含子文件夹)中,每种类型的文件及个数
最新推荐文章于 2023-03-14 19:34:50 发布