public class Demo02 { 
        public static void main(String[] args) throws IOException { 
                /* 
                  
                 *  
                 * 思路: 
                 *         A:因为要统计的是每个字符出现了多少次,所以应该定义双列集合来记录。 
                 *            字符做键,出现的次数做值。 
                 *         B:因为要统计的是字符出现的次数,所以我们应该创建字符输入流来读取内容(一次读一个字符) 
                 *  C:因为读取到的内容是int类型,所以应该强转成char类型的数据。 
                 *  D:判断转换后的内容再双列集合中是否存在 
                 *          存在: 就将次数+1,然后重新存储 
                 *          不存在:就将次数记录为1 
                 *  E:能走到这里,说明双列集合中的内容就是我们想要的数据。遍历集合,把内容写入到指定文件中即可。 
                 */ 
                TreeMap<Character, Integer> tm = new TreeMap<>();                //A  
                BufferedReader br = new BufferedReader(new FileReader("a.txt"));        //B 
                int len = 0;                //用来记录读取到的内容的 
                while ((len = br.read()) != -1) { 
                        char key = (char) len; // 这里的key代表的就是文件中的某个字符                //C 
                        tm.put(key, !tm.containsKey(key) ? 1 : tm.get(key) + 1);        //D 
                } 
                br.close(); 
                //System.out.println(tm); 
                //E:能走到这里,说明双列集合中的内容就是我们想要的数据。遍历集合,把内容写入到指定文件中即可。 
                BufferedWriter bw = new BufferedWriter(new FileWriter("times.txt")); 
                for (Character key : tm.keySet()) { 
                        switch (key) { 
                        case '\t': 
                                bw.write("\\t" + "=" + tm.get(key)); 
                                break; 
                        case '\r': 
                                bw.write("\\r" + "=" + tm.get(key)); 
                                break; 
                        case '\n': 
                                bw.write("\\n" + "=" + tm.get(key)); 
                                break; 
                        default: 
                                bw.write(key + "=" + tm.get(key)); 
                                break; 
                        } 
                        bw.newLine(); 
                } 
                bw.close(); 
        } 
} 
 |