这是我参与更文挑战的第6天,活动详情查看: 更文挑战
IO流获取每个字符出现的次数0
1.获取每个字符,存在集合之中
//1.创建Map集合
Map<Character, Integer> map = new HashMap<>();
//2.遍历每一个字符,每一个字符出现的次数放到map中
fr = new FileReader("hello.txt");
int c = 0;
while ((c = fr.read()) != -1) {
//int还原char
char ch = (char) c;
//判断char是否在map中第一次出现
if (map.get(ch) == null) {
map.put(ch, 1);
} else {
map.put(ch, map.get(ch) + 1);
}
}
2.获取次数,写入文件
通过for遍历存放文本的集合,再通过switch来确定出现的字符个数。通过bw流写入数据。
for (Map.Entry<Character, Integer> entry : entrySet) {
switch (entry.getKey()) {
case ' ':
bw.write("空格=" + entry.getValue());
break;
case '\t':
bw.write("tab键=" + entry.getValue());
break;
case '\r':
bw.write("回车=" + entry.getValue());
break;
case '\n':
bw.write("换行=" + entry.getValue());
break;
default:
bw.write(entry.getKey() + "=" + entry.getValue());
break;
}
bw.newLine();
}
3.关闭资源
先判断资源是否启用,在关闭资源
finally {
if (fr != null) {
try {
fr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (bw != null) {
try {
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
4.整体代码
package 获取每个字符出现的次数;
import java.io.*;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class Main {
public static void main(String[] args) {
FileReader fr =null;
BufferedWriter bw = null;
try {
//1.创建Map集合
Map<Character, Integer> map = new HashMap<>();
//2.遍历每一个字符,每一个字符出现的次数放到map中
fr = new FileReader("hello.txt");
int c = 0;
while ((c = fr.read()) != -1) {
//int还原char
char ch = (char) c;
//判断char是否在map中第一次出现
if (map.get(ch) == null) {
map.put(ch, 1);
} else {
map.put(ch, map.get(ch) + 1);
}
}
//3.把map中数据存在count.txt文件中
//3.1创建Writer
bw = new BufferedWriter(new FileWriter("count.txt"));
//3.2遍历map,写入数据
Set<Map.Entry<Character, Integer>> entrySet = map.entrySet();
for (Map.Entry<Character, Integer> entry : entrySet) {
switch (entry.getKey()) {
case ' ':
bw.write("空格=" + entry.getValue());
break;
case '\t':
bw.write("tab键=" + entry.getValue());
break;
case '\r':
bw.write("回车=" + entry.getValue());
break;
case '\n':
bw.write("换行=" + entry.getValue());
break;
default:
bw.write(entry.getKey() + "=" + entry.getValue());
break;
}
bw.newLine();
}
} catch (IOException e) {
e.printStackTrace();
}finally {
if (fr != null) {
try {
fr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (bw != null) {
try {
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}