谁能帮我分析下BufferedReader的源码啊?

mybeta 2013-07-26 03:13:28
实在看不懂这中间的源码啊!但是比较想弄懂,谁能帮我分析下里面的源码?链接也行。

主要分析下read方法和fill方法就好了

谢谢
...全文
162 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
懒猫gg 2013-07-26
  • 打赏
  • 举报
回复
   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++]; //返回下一个数据
	    }
	}
    }
懒猫gg 2013-07-26
  • 打赏
  • 举报
回复
 do {

      //dst=0表示cb[]字段全部更新,dst>0表示标记字符串的长度.

      n = in.read(cb, dst, cb.length - dst);

    } while (n == 0);

防止读取不到数据,如果读取完成果断-1 如果没完成是0的话可能跳过字符过多(各种差错)
lkq_david 2013-07-26
  • 打赏
  • 举报
回复
http://blog.csdn.net/ben_gmail/article/details/6325964
lkq_david 2013-07-26
  • 打赏
  • 举报
回复
read() 得到第一个字符对应的Ascii码

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧