62,616
社区成员
发帖
与我相关
我的任务
分享
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
//统计本项目中(所有java文件中)每个字母出现的次数(不用按照字母的顺序排列),按照如下格式打印:
// a(1000)b(2000)c(3000)d(4000)...
public class Test {
public static void main(String[] args) throws IOException {
// String s = "C:\\Users\\Administrator\\Desktop";
String s = "D:\\Program Files\\workspace\\test1pro\\src\\cn\\itcast\\app\\Test.java";
File file = new File(s);
Map<Character, Integer> map = new HashMap<>();
bianli(file, map);
System.out.println(map);
}
// 遍历文件夹
public static void bianli(File file, Map<Character, Integer> map) throws IOException {
if (file.isDirectory()) {// 这句话判断是不是文件夹
File[] f = file.listFiles();
// 对下面子目录再进行循环,并且递归遍历
for (File file2 : f) {
bianli(file2, map);
}
} else {// 否则是文件,这个时候我们要到文件里去读取数据,并把是字母的数据添加到Map中
BufferedReader br = new BufferedReader(new FileReader(file));
String line;
while ((line = br.readLine()) != null) {
char[] ch = line.toCharArray();
for (char c : ch) {
if (c >= 'a' && c <= 'z') {
if (!map.containsKey(c)) {
map.put(c, 1);
} else {
map.put(c, map.get(c) + 1);
}
}
}
}
br.close();
}
}
}
BufferedReader br = new BufferedReader(new FileReader(file));
这句写错了,应该是file2
BufferedReader br = new BufferedReader(new FileReader(file2));
还有路径s,可以写文件夹的名字。