键盘录入一个文件夹路径,统计该文件夹(包含子文件夹)中,每种类型的文件及个数,
注意:用文件类型(后缀名,不包含.,"java","txt")作为key,用个数作为value,放入到map集合中,并按照如下格式打印map集合中的内容
docx类型的文件有 1 个
java类型的文件有 24 个
txt类型的文件有 10 个
方法一:
public static void main(String[] args) {
Map
File file = new File("D:\\ddd");
getCount(file, map);
System.out.println(map);
}
/*
* 统计以ext为拓展名的文件在file中出现的次数
*/
public static void getCount(File file,Map
File[] files = file.listFiles();
for (File f : files) {
if(f.isFile()) {
// 获取拓展名
String name = f.getName();
int index = name.lastIndexOf('.');
String ext = name.substring(index+1);
//ext 出现了一次
if(map.containsKey(ext)) {
map.put(ext, map.get(ext)+1);
}else {
map.put(ext, 1);
}
}else if(f.isDirectory()) {
getCount(f, map);
}
}
}
方法二
public static Map
public static Integer txtNum;
public static Integer javaNum;
public static Integer docNum;
public static void main(String[] args) {
function();
getPath();
printMap();
}
public static void function() {
map=new HashMap
txtNum=0;
javaNum=0;
docNum=0;
map.put("java", javaNum);
map.put("doc", docNum);
map.put("txt", txtNum);
}
public static void getPath() {
Scanner scan=new Scanner(System.in);
while(true) {
System.out.println("请输入文件路径:");
String path=scan.nextLine();
File file=new File(path);
if(! file.exists()) {
System.out.println("文件夹不存在!");
continue;
}else {
saveMap(file);
System.out.println("存储完成!");
break;
}
}
}
/*
* 判断文件类型
*/
public static void saveMap(File file) {
File[] fileArr=file.listFiles();
for(int i=0;i if(fileArr[i].isDirectory()) { saveMap(fileArr[i]); } if(fileArr[i].getAbsolutePath().endsWith("txt")) { txtNum+=1; map.put("txt", txtNum); } if(fileArr[i].getAbsolutePath().endsWith("java")) { javaNum+=1; map.put("java", javaNum); } if(fileArr[i].getAbsolutePath().endsWith("doc")) { docNum+=1; map.put("doc", docNum); } } } /* * 输出文件个数 */ public static void printMap() { Set Iterator while(it.hasNext()) { String s=it.next(); System.out.println(s+"类型的文件个数有:"+map.get(s)); } }