相对路径:本文件同级下的文件,直接写文件名字,就是相对路径例如zzz.txt;,同级目录里有zzz.txt,直接写zzz.txt就是相对路径
绝对路径:文件在硬盘中真正存放的位置,例如 D:\JavaProjects\exceptionLianxi\src\main\java\zzz.txt 当然可以省略掉
**需求:**获取一个文本上每个字符出现的次数,将结果写在times.txt上
import java.io.*;
import java.util.TreeMap;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class ziFuHuoQ {
/* *获取一个文本上每个字符出现的次数,将结果写在times.txt上
*
* 分析:
* 1,创建带缓冲的输入流对象
* 2,创建双列集合对象TreeMap
* 3,将读到的字符存储在双列集合中,存储的时候要做判断,如果不包含这个键,就将键和1存储,如果包含这个键,就将该键和值加1存储
* 4,关闭输入流
* 5,创建输出流对象
* 6,遍历集合将集合中的内容写到times.txt中
* 7,关闭输出流
* 流尽量晚开早关
* */
public static void main(String[] args) throws IOException {
// 1,创建带缓冲的输入流对象
BufferedReader br = new BufferedReader ( new FileReader ( "src\\main\\java\\zzz.txt" ) );
// 2,创建双列集合对象TreeMap
TreeMap<Character,Integer> tm = new TreeMap <Character, Integer> ();
// 3,将读到的字符存储在双列集合中,存储的时候要做判断,如果不包含这个键,就将键和1存储,如果包含这个键,就将该键和值加1存储
int ch;
while ((ch = br.read ()) != -1){
char c = (char)ch; // 强制类型转换
/* if (!tm.containsKey ( c )){
tm.put ( c,1 );
}else{
tm.put ( c,tm.get ( c ) + 1);
}
*/
tm.put ( c,!tm.containsKey ( c ) ? 1 : tm.get ( c ) + 1);
}
br.close (); //关闭流
// 5,创建输出流对象
//在这里times.txt你写的是相对路径,他这里的相对路径是从exceptionLianxi文件夹算起的所以,你直接写zzz它找不到知道了
BufferedWriter bw = new BufferedWriter ( new FileWriter ( "src\\main\\java\\times.txt" ));
// 6,遍历集合将集合中的内容写到times.txt中
for (Character key : tm.keySet ()){
switch (key){
case'\n':
bw.write ( "\\n" + "=" + tm.get ( key ));
break;
case'\t':
bw.write ("\\t" + "=" + tm.get(key));
case'\r':
bw.write ( "\\r" + "=" + tm.get(key) );
default:
bw.write ( key + "=" + tm.get(key)); //写出键和值
}
bw.newLine ();
}
// 7,关闭输出流
bw.close ();
}
}
结果:
\t=337\r=337 =337 就是空格
\n=168
\r=168
=168
=189
!=7
"=50
#=48
(=109
)=109
*=37
+=2
,=52
-=9
.=97
/=50
0=15
1=35
2=21
3=3
4=3
5=2
6=2
7=1
8=6
9=1
:=1
;=55
==29
?=2
@=2
B=24
C=3
F=30
G=4
I=23
K=4
L=15
N=8
O=23
R=30
S=21
T=4
U=4
W=22
[=2
\=4
]=2
_=16
a=95
b=49
c=43
d=80
e=292
f=59
g=4
h=26
i=117
j=2
l=80
m=27
n=94
o=32
p=21
r=183
s=42
t=140
u=56
v=8
w=66
x=19
y=8
{=13
}=13
一=19
上=5
下=2
不=7
且=1
个=9
中=5
串=1
临=1
为=8
么=4
义=1
之=1
也=1
买=2
乱=1
了=4
二=2
交=2
什=2
从=3
代=1
以=15
们=2
件=14
会=16
传=1
但=1
低=2
使=12
倒=2
候=7
值=1
先=3
入=4
关=8
其=1
具=1
再=2
写=25
冲=6
况=1
几=1
出=22
函=1
分=1
创=7
到=13
前=2
功=2
动=1
包=3
区=4
升=1
半=1
卓=1
印=1
原=1
去=3
反=2
取=20
变=1
只=1
可=16
台=2
号=7
同=1
后=5
否=1
含=1
和=5
回=2
因=2
图=2
在=3
多=1
大=2
如=5
子=1
字=55
学=1
安=1
定=6
对=7
将=12
小=2
少=1
就=5
带=1
干=1
平=2
并=1
序=2
库=1
应=1
建=7
式=1
引=1
强=1
当=3
总=1
您=1
情=1
成=1
我=2
或=1
才=1
打=1
执=2
找=1
把=4
拟=1
拷=5
持=1
指=5
按=2
换=10
据=5
接=3
推=1
提=5
支=1
放=1
效=4
数=19
文=23
方=8
时=13
是=9
替=1
有=5
本=10
机=3
构=1
析=1
果=6
样=1
档=1
模=2
次=14
正=2
段=2
每=2
没=1
法=8
流=41
源=1
满=3
然=2
照=2
版=5
率=2
现=3
用=26
画=1
的=46
盘=1
直=3
相=1
看=1
知=1
码=13
示=2
程=3
符=47
第=4
类=4
系=1
级=1
纯=2
组=6
结=2
给=3
统=2
缓=6
编=4
置=2
者=1
联=5
能=3
自=2
节=10
若=1
荐=1
获=5
行=16
表=13
被=2
装=5
要=8
解=1
计=2
认=2
设=3
识=1
试=4
请=1
读=23
调=2
象=5
贝=5
购=2
资=1
赋=1
起=1
跨=2
转=14
软=3
载=1
输=6
过=3
返=2
还=3
这=1
进=1
逐=1
通=1
造=1
那=2
醒=1
释=1
量=1
键=1
降=2
需=5
非=2
饰=1
高=4
默=2