奉上要获取的文件夹下的所有文件截图,
解题思路:
先判断目标是文件还是文件夹
如果是文件,获取文件名,根据文件名得到最后一个“.”的下标,由此得到后缀名。
将后缀名写入map中,作为key,相同后缀名的文件个数作为value
如果是文件夹,遍历文件夹,利用递归,获取文件夹下的文件
具体代码和运行结果如下所示
package com.nylg.file;
import java.io.File;
import java.util.HashMap;
import java.util.Map;
//获取D:/android/androidCode下所有的表扩展名及所对应的扩展名文件的个数
public class Demo6 {
static Map<String,Integer> m = new HashMap<String,Integer>();
public static void main(String[] args) {
getFileCount(new File("E:/1215"));
for(Map.Entry<String, Integer> entry : m.entrySet()){ //遍历map,打印key和value的值
String key = entry.getKey();
int value = entry.getValue();
System.out.println(key+"------"+value);
}
}
public static void getFileCount(File file){
if(file.isFile()){ //如果是文件
String name = file.getName(); //获取文件名字
int index = name.lastIndexOf("."); //获取最后一个“.”的下标
String endName = name.substring(index); //获取文件的后缀名
if(m.containsKey(endName)){ //判断后缀名是否在map中,endName为key,相同后缀名的文件个数为value
m.put(endName, m.get(endName)+1); //put覆盖前面的值
}else{ //如果后缀名不在map中,将其加进map中
m.put(endName, 1); //使value值为1,表示以该后缀名结尾的文件有1个
}
}else{ //如果是文件夹,遍历文件夹
File[] arrf = file.listFiles();
if(arrf.length > 0){
for(File fs : arrf){
getFileCount(fs); //递归
}
}
}
}
}
运行结果: