黑马程序员技术交流社区

标题: 用FileReader读取一个文件,出现丢失就是隔一个读一个 [打印本页]

作者: xiaoxinxin003    时间: 2015-7-16 11:56
标题: 用FileReader读取一个文件,出现丢失就是隔一个读一个
  1. import java.io.*;
  2. import java.util.*;
  3. public class Test7 {

  4.         private static Integer value;

  5.         public static void main(String[] args) {
  6.                 FileReader fr = null;
  7.                 FileWriter fw = null;
  8.                 try {
  9.                         fr = new FileReader("e:\\a.txt");
  10.                         fw = new FileWriter("e:\\b.txt");
  11.                         TreeMap<Character,Integer> hm = new TreeMap<Character,Integer>();
  12.                         value = null;
  13.                         int count = 0;
  14.                         while((fr.read())!=-1)
  15.                         {//这里隔一个读一个,
  16.                                 char ch = (char) fr.read();
  17.                                 //System.out.println(ch);
  18.                                 if(" ".equals(ch))
  19.                                         continue;
  20.                                 value = hm.get(ch);
  21.                                 if(value != null)
  22.                                         count = value;
  23.                                 count++;
  24.                                 hm.put(ch, count);
  25.                                 count = 0;
  26.                         }
  27.                         System.out.println(hm.size());
  28.                         StringBuilder sb = new StringBuilder();
  29.                         Set<Map.Entry<Character, Integer>> entrySet = hm.entrySet();
  30.                         Iterator<Map.Entry<Character, Integer>>it = entrySet.iterator();
  31.                         while(it.hasNext())
  32.                         {
  33.                                 Map.Entry<Character, Integer>me = it.next();
  34.                                 Character chs = me.getKey();
  35.                                 Integer counts = me.getValue();
  36.                                 sb.append(chs+" "+counts+"次   ");                               
  37.                         }
  38.                         fw.write(sb.toString()+"\r\n");
  39.                         fw.flush();
  40.                         System.out.println(sb.toString()+"\r\n");
  41.                                
  42.                 } catch (Exception e) {
  43.                         // TODO: handle exception
  44.                 }
  45.         }

  46. }
复制代码



作者: xiaoxinxin003    时间: 2015-7-16 12:06
本帖最后由 xiaoxinxin003 于 2015-7-16 12:46 编辑

我觉得就是循环那块出了问题了,我的文件中存的是abcd结果这能读到b和d,FileReader是一次读取一个字符的呀。。。第18行是:      Character ch = (char) fr.read();

作者: 段培峰    时间: 2015-7-16 12:29
感觉读那里就错了




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