import java.io.*;
import java.util.HashMap;
import java.util.Map;
/**
* 获取文本上每个字符出现的次数,字符及出现的次数保存在Map中,将Map中的数据写入到文件。
*/
public class CharacterRepeatNumbers {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new FileReader(new File("D:\\FileTest\\FileTest.txt")));
BufferedWriter bw = new BufferedWriter(new FileWriter(new File("D:\\FileTest\\WordsCount.txt")));
try {
//key为出现的字符,value为出现的次数
Map<Character, Integer> map = new HashMap<>();
int c = 0;
while ((c = br.read()) != -1) {
char ch = (char) c; //c是从文件中读到的字符的int值,需转换为char型字符
if (map.containsKey(ch)) { //如果读到的字符存在于map中
map.put(ch, map.get(ch) + 1); //根据读到的字符映射到map中,map.get(ch)得到的value值加1,记录字符的重复出现次数
} else { //读到的字符不存在于map中
map.put(ch, 1); //根据读到的字符映射到map中,同时Integer赋值为1,代表第一次出现
}
}
for (Map.Entry<Character, Integer> entry : map.entrySet()) {
switch (entry.getKey()) {
case '\n':
bw.write("换行符 = " + entry.getValue()); break;
case ' ':
bw.write("空格符 = " + entry.getValue()); break;
case '\r':
bw.write("回车符 = " + entry.getValue()); break;
case '\t':
bw.write("制表符 = " + entry.getValue()); break;
default:
bw.write(entry.getKey() + " = " + entry.getValue()); break;
}
bw.newLine();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (bw != null) {
try {
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (br != null) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
读入的D:\\FileTest\\FileTest.txt
文件内容:
THRFUR.COM WITH YOU, LEARNING EVERYDAY.
是否看与你同行,一起坚持学习吧。
写出的统计出现次数D:\\FileTest\\WordsCount.txt
文件内容(运行结果):
一 = 1
A = 2
持 = 1
。 = 1
C = 1
D = 1
E = 3
F = 1
G = 1
H = 2
I = 2
换行符 = 1
看 = 1
L = 1
同 = 1
行 = 1
, = 1
M = 1
回车符 = 1
N = 2
与 = 1
O = 2
R = 4
T = 2
U = 2
V = 1
W = 1
Y = 3
坚 = 1
空格符 = 5
你 = 1
习 = 1
否 = 1
学 = 1
吧 = 1
, = 1
. = 2
是 = 1
起 = 1