package cn.itcast.test;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.TreeMap;
public class Test6 {
/**
* @param args
* 6,统计某个.txt中每个字符出现的次数 统计结果按照字典顺序排列写入到times.txt中
* @throws IOException
*/
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new FileReader("day22笔记.txt")); //创建输出流对象
TreeMap<Character, Integer> tm = new TreeMap<>(); //创建双列集合
int ch;
while((ch = br.read()) != -1) { //从缓冲区读读取字符
char c = (char)ch; //因为已经类型提升,所以需要强转为char
/*if(!tm.containsKey(c)) { //如果不包含这个键
tm.put(c, 1); //将该键和值为1存入
}else { //如果包含了这个键
tm.put(c, tm.get(c) + 1); //将键和值加1存入
}*/
tm.put(c, !tm.containsKey(c) ? 1 : tm.get(c) + 1);
}
br.close(); //关流
BufferedWriter bw = new BufferedWriter(new FileWriter("times.txt")); //创建流对象,关联times.txt
for(Character c : tm.keySet()) { //遍历双列集合
switch (c) {
case '\t': //匹配是\t
bw.write("\\t" + "=" + tm.get(c)); //写出\t和\t对应出现的次数
break;
case '\n': //匹配是\n
bw.write("\\n" + "=" + tm.get(c)); //写出\n和\n对应出现的次数
break;
case '\r': //匹配是\r
bw.write("\\r" + "=" + tm.get(c)); //写出\r和\r对应的出现的次数
break;
default:
bw.write(c + "=" + tm.get(c)); //写出其他字符出现的次数
break;
}
bw.newLine(); //没写一个就换行一次
}
bw.close();
}
} |
|