黑马程序员技术交流社区

标题: 字符流典型类,助于学习 [打印本页]

作者: 1169646761    时间: 2014-9-7 00:27
标题: 字符流典型类,助于学习
package cn.itcast.test;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.TreeMap;

public class Test6 {

        /**
         * @param args
         * 6,统计某个.txt中每个字符出现的次数 统计结果按照字典顺序排列写入到times.txt中
         * @throws IOException
         */
        public static void main(String[] args) throws IOException {
                BufferedReader br = new BufferedReader(new FileReader("day22笔记.txt"));        //创建输出流对象
                TreeMap<Character, Integer> tm = new TreeMap<>();                                                //创建双列集合
                int ch;
                while((ch = br.read()) != -1) {                                                                                        //从缓冲区读读取字符
                        char c = (char)ch;                                                                                                        //因为已经类型提升,所以需要强转为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"));        //创建流对象,关联times.txt
                for(Character c : tm.keySet()) {                                                                                //遍历双列集合
                        switch (c) {                                                       
                        case '\t':                                                                                                                        //匹配是\t
                                bw.write("\\t" + "=" + tm.get(c));                                                                //写出\t和\t对应出现的次数
                                break;
                        case '\n':                                                                                                                        //匹配是\n
                                bw.write("\\n" + "=" + tm.get(c));                                                                //写出\n和\n对应出现的次数
                                break;
                        case '\r':                                                                                                                        //匹配是\r
                                bw.write("\\r" + "=" + tm.get(c));                                                                //写出\r和\r对应的出现的次数
                                break;
                        default:
                                bw.write(c + "=" + tm.get(c));                                                                        //写出其他字符出现的次数
                                break;
                        }
                        bw.newLine();                                                                                                                //没写一个就换行一次
                }
               
                bw.close();
        }

}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2