[Java] 纯文本查看 复制代码
package cn.itcast;
import java.io.File;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
/*
* 统计D盘下每个文件夹中的.txt文件的个数(包括子文件里的文件),
* 然后将文件夹名称以及该文件夹里.txt文件个数存入到合适的集合中,
* 并遍历该集合,
* 打印方式如下:
* xxx文件夹(父文件夹名称即可)-----有x个.txt文件(包括子文件夹里的txt文件个数)
*/
public class Test01 {
public static void main(String[] args) {
File file = new File("D:\\");
HashMap<String, Integer> fileMap = new HashMap<>();
int sum = 0;
extracted(file, fileMap, sum);
Set<Entry<String, Integer>> entrySet = fileMap.entrySet();
for (Map.Entry<String, Integer> entry : entrySet) {
System.out.println(entry.getKey() + "文件夹-----有" + entry.getValue() + "个.txt文件");
}
}
private static int extracted(File file, HashMap<String, Integer> map, int sum) {
File[] files = file.listFiles();
int count = 0;
for (File file2 : files) {
if (file2.isDirectory()) {
sum = extracted(file2, map, sum);
} else if (file2.isFile()) {
String fileName = file2.getName();
if (fileName.endsWith(".txt")) {
count++;
}
}
}
map.put(file.getPath(), count + sum);
return count + sum;
}
}