键盘录入一个文件夹路径,统计该文件夹(包含子文件夹)中每种类型的文件及个数,注意:用文件类型(后缀名,不包含.(点),如:"java","txt")作为key

参考文章:

一、键盘录入一个文件夹路径,统计该文件夹(包含子文件夹)中每种类型的文件及个数       http://blog.csdn.net/qq_36698213/article/details/78711420

二、Java学习之IO流一           http://www.dongcoder.com/detail-604731.html  

三、键盘录入一个文件夹路径,统计该文件夹(包含子文件夹)中每种类型的文件及个数       

       http://blog.csdn.net/wangzili1995/article/details/77103401

上面是参考文章,下面写我自己的代码了:

想说主程序:

  

	public static void main(String[] args) {
		File dir = new File("D:\\abc");
		Map<String, Integer> map = new HashMap<String, Integer>();
		countFileClassNumber(dir, map);
		entrySetPrint(map);
		System.out.println("=================================");
		keySetPrint(map);

	}

接下来是两个函数:

/*
	 *  设计函数,统计文件加中各种文件的个数
	 *  基本解决思路:
	 *      1,遍历文件夹,对文件夹中所有的文件类型,取“ . ” 后面的几位字母
	 *      2,用一个数组来存储文件夹中这些文件类型的个数
	 *      3,将文件类型还有对应的类型个数,存储到Map集合中
	 *      4,两种方式遍历集合     keySet方法,  entrySet方法
	 */
	public static void countFileClassNumber(File dir,
			Map<String, Integer> map) {

		File[] fileArr = dir.listFiles();
		//递归遍历每一个文件,截取后缀并存入相应的数组中
		for (int i = 0; i < fileArr.length; i++) {
			if (fileArr[i].isDirectory()) {
				countFileClassNumber(fileArr[i], map);
			} else {
				String str = fileArr[i].toString();
				str = str.substring(str.lastIndexOf(".") + 1);//截取文件夹后缀 “.”之后的字符串
				map.put(str, map.containsKey(str) ? map.get(str) + 1 : 1);//精简写法,不过不推荐,建议使用if...else
			}
		}
	}

HashMap遍历输出方法:

/*
	 *  Map的entrySet输出方法
	 */
	public static void entrySetPrint(Map<String, Integer> map) {
		for (Entry<String, Integer> entry : map.entrySet()) {
			System.out.println(entry.getKey() + "..." + entry.getValue());
		}
	}

	/*
	 * Map的keySet 输出方法
	 */
	public static void keySetPrint(Map<String, Integer> map) {
		for (String key : map.keySet()) {
			System.out.println(key + "..." + map.get(key));
		}
	}

OK,上面就是我参考其他文章写出来的代码了。




  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值