java中的相对路径和绝对路径,获取一个文本上每个字符出现的次数

相对路径:本文件同级下的文件,直接写文件名字,就是相对路径例如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


发布了55 篇原创文章 · 获赞 5 · 访问量 4167

猜你喜欢

转载自blog.csdn.net/qq_43654669/article/details/100752630