实在看不懂这中间的源码啊!但是比较想弄懂,谁能帮我分析下里面的源码?链接也行。主要分析下read方法和fill方法就好了谢谢

解决方案 »

  1.   

    read() 得到第一个字符对应的Ascii码
      

  2.   

    http://blog.csdn.net/ben_gmail/article/details/6325964
      

  3.   

     do {      //dst=0表示cb[]字段全部更新,dst>0表示标记字符串的长度.      n = in.read(cb, dst, cb.length - dst);    } while (n == 0);   防止读取不到数据,如果读取完成果断-1 如果没完成是0的话可能跳过字符过多(各种差错)
     
      

  4.   

       public int read() throws IOException {
    synchronized (lock) {
        ensureOpen();//查看连接是否掉了
        for (;;) {
    if (nextChar >= nChars) {//缓存里的字符是读取完
        fill();//清楚缓存数据重新读一批到缓存
        if (nextChar >= nChars)//新的缓存数据是滞读取完
    return -1;//刚读进缓存数据也读取完的话证明数据已读完
    }
    if (skipLF) {
        skipLF = false;
        if (cb[nextChar] == '\n') {//回车的话过
    nextChar++;
    continue;
        }
    }
    return cb[nextChar++]; //返回下一个数据
        }
    }
        }