A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© _J2EE_LiXiZhen 中级黑马   /  2017-11-17 23:16  /  1047 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

[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));
		}
	}
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马