具体结果视用户的文本而定:
附代码:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.TreeMap;
public class Test2 {
/**
* @param args
* 获取一个文本上每个字符出现的次数,将结果写在times.txt上
* @throws IOException
*/
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new FileReader("a.txt")); //创建字符输入流,关联a.txt
TreeMap<Character, Integer> tm = new TreeMap<>(); //创建双列集合
int ch;
while((ch = br.read()) != -1) { //read()方法读一次会将缓冲区读满,从缓冲区将字符返给ch
char c = (char)ch; //读到的字符提升为int类型需要强转为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"));//创建输出流对象
for(Character key : tm.keySet()) { //遍历双列集合
switch (key) {
case '\t': //写出\t和出现的次数
bw.write("\\t" + "=" + tm.get(key));
break;
case '\r':
bw.write("\\r" + "=" + tm.get(key)); //写出\r和出现的次数
break;
case '\n':
bw.write("\\n" + "=" + tm.get(key)); //写出\n和出现的次数
break;
default:
bw.write(key + "=" + tm.get(key)); //写出其他字符和出现的次数
break;
}
bw.newLine(); //写出换行
}
bw.close(); //关闭写出流
}
}
我的部分 运行结果如下: ps:会打印出每个字符的出现次数并实现列举自动转行等操作。