21-IO流-14-IO流(字符流-缓冲区-BufferedReader-readLine方法原理)



  打开API,找到java.io包,发现如BufferedReader类,将父类Reader中的某些方法进行了复写,如close、read等等。
  
  在Reader类中,点开read方法,发现:用于支持高效的单字符输入的子类应重写此方法。
  
  Reader是从源里面读取数据,而BufferedReader是从缓冲区里面读取数据。
  (BufferedReader操作的是自己家的数据,是它自己家的数组内数据,往外读,当然不能用父类Reader中的方法,必须复写,生成
  一个属于自己特有的方法,所以覆盖了read方法)
  
  形象的比喻:吃馒头
 (1)Reader:每吃一个,去厨房拿一次
 (2)BufferedReader:直接搞个篮子,然后一次性去厨房拿完,之后只需要从篮子里面取出即可,这里就是自己的取出方式。
 发现对于取出方式来说,(2)比(1)更加高效。
 
 有了缓冲区,那么直接操作内存即可,无需再操作硬盘。
 
 =============================================================================================================
 
 下面讲解BufferedReader中的readLine方法原理:
 首先查找API,发现readLine方法说明:
 
  读取一个文本行。通过下列字符之一即可认为某行已终止:换行 ('\n')、回车 ('\r') 或回车后直接跟着换行。
  返回:包含该行内容的字符串,不包含任何行终止符,如果已到达流末尾,则返回 null 
 
 其实原理很简单,就是自己建立一个临时容器A,然后从头开始读取,只要读到换行符,立即终止读取,那么此时A内存储的是文本文件
 一行的数据。(read方法是将读到的数据一直往缓冲区里面塞,就算读到换行,也存入缓冲区中。)然后将该行数据以String类型输出。
 
 其实readLine方法就是基于read方法,多建立了一个临时容器,判断一次结束标记,即换行符。


图解见桌面



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值