欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-07-11 09:46:53
...
package cn.demo22;

import java.io.File;
import java.util.HashMap;
import java.util.Scanner;
import java.util.Set;

/*
 * 5.键盘录入一个文件夹路径,统计该文件夹(包含子文件夹)中每种类型的文件及个数,注意:用文件类型(后缀名,不包含.(点),如:"java","txt")作为key,
	用个数作为value,放入到map集合中,并用两种方式遍历map集合
	例如:
	doc 的类型的文件有  3 个
	java 的类型的文件有  5 个
	txt 的类型的文件有  7 个
 */
public class Filed {

	public static void main(String[] args) {
		HashMap<String , Integer> map1 = new HashMap<String, Integer>();
		File file = new File("D:\\新建文件夹");
		HashMap<String , Integer> map = sum(map1,file);
		bianl(map);
	}
	/*
	 * 遍历maps
	 */
	public static void bianl(HashMap<String , Integer> map){
		Set<String> mapsarr = map.keySet();
		for(String s : mapsarr){
			System.out.println(s+ "类型有"+map.get(s));
		}
		
	}
	/*  hashmap对象,
	 *  统计该文件夹(包含子文件夹)中每种类型的文件及个数
	 *  文件数组  
	 *  遍历
	 *  判断dir 是 递归   否 判断文件类型 
	 *  有此类型  map.put修改该类型key所对应的值value
	 *  无此类型 map.put(key,1)
	 *  
	 *  
	 */
	public static HashMap<String , Integer>  sum(HashMap<String, Integer> map,File file){
		File[] farr = file.listFiles();
		Set<String> s = map.keySet();
		for(File f : farr){
			int index = f.getName().lastIndexOf(".");
			String key = f.getName().substring(index + 1);
			if(f.isDirectory()){
				sum(map,f);
				} 
			//寻找最后一次出现的. 切割得到文件类型
			//用文件类型和map中的key值比较
			else if(!map.containsKey(key)){
				//没有就添加key 值为1️
				map.put(key, 1);
				System.out.println(f);
			}else{
				//有就在原基础上加一
				int count = map.get(key) + 1;
				map.put(key, count);
				System.out.println(f);
			}
			
			
				
			
			
		}
		return map;
	}
	
	
	/*
	 * Scanner
	 */
	public static String dir() {
		System.out.println(" please");
		Scanner sc = new Scanner(System.in);
		String s = sc.next();
		
		return s;
	}
}