[Java] 纯文本查看 复制代码 //键盘录入一个文件夹路径,统计该文件夹(包含子文件夹)中每种类型的文件及个数
//注意:用文件类型(后缀名,不包含.(点),如:"java","txt")作为key,
// 用个数作为value,放入到map集合中,并用两种方式遍历map集合
// 例如:
// doc 的类型的文件有 3 个
// java 的类型的文件有 5 个
// txt 的类型的文件有 7 个
public class TestMap {
public static void main(String[] args) {
//创建map集合
HashMap<String, Integer> map = new HashMap<String,Integer>();
//创建File对象
File file = new File("C:\\Users\\Administrator\\Desktop\\xmind");
//调用方法foreach
foreach(file,map);
/*//遍历map
for (String key : map.keySet()) {
System.out.println(key+"="+map.get(key));
}*/
}
public static int value = 1;
//遍历方法,遍历出指定路径下的所有文件和文件夹,将后缀和数量存入map集合
public static void foreach(File file,HashMap<String,Integer> map) {
//是文件
if(file.isFile()) {
String[] arr = file.getName().split("\\.");
if(map.get(arr[1])==null) {
map.put(arr[1], value);
} else {
map.put(arr[1], value+1);
}
} else {
//是文件夹
File[] fileList = file.listFiles();
for (File f : fileList) {
if(f.isFile()) {
String[] arr = f.getName().split("\\.");
if(map.get(arr[1])==null) {
map.put(arr[1], value);
} else {
value++;
map.put(arr[1], value);
}
} else {
foreach(f,map);
}
}
}
for (String key : map.keySet()) {
System.out.println(key+"="+map.get(key));
}
}
} |