1:要统计个数,首先想到的Map集合,
2:要统计包含文件夹里面的,需要递归
3,确定方法,: 只需要打印,所以没有返回值,因为是递归,所以要传如入集合,
public static void main(String[] args) {
String string = "F:\\";
HashMap<String, Integer> mp = new HashMap<>();
File fil = new File(string);
if(fil.isDirectory()) {
getFile(fil,mp);
}
for (Entry<String, Integer> en : mp.entrySet()) {
System.out.println(en.getKey()+"文件夹有"+en.getValue()+"个txt文件");
}
}
public static void getFile(File fil,HashMap<String, Integer> mp) {
//获取文件夹的名字
String sname = fil.getName();
//拿到文件夹下所有文件的文件名
File[] fa = fil.listFiles();
//判断是否为空
if(fa != null) {
//遍历
for (File file : fa) {
//如果是文件,并且以".txt" 结尾
if(file.getName().endsWith(".txt")&&file.isFile()) {
//如果Map集合里面有 就把文件夹名和对映值+1存储 文件夹名也就是键会自动覆盖
if(mp.containsKey(sname)){
mp.put(sname, mp.get(sname)+1);
} else{
//没有就把值存为1
mp.put(sname, 1);
}
//如果是文件夹,递归调用
} else if (file.isDirectory()){
getFile(file,mp);
}
}
}
}
}
|