第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

[二十一]JavaIO之BufferedReader 與 BufferedWriter

標(biāo)簽:
Java

功能简介

BufferedReader  从字符输入流中读取文本,内部缓冲各个字符,从而实现字符、数组和行的高效读取

BufferedWriter 将文本写入字符输出流,内部缓冲各个字符,从而提供单个字符、数组和字符串的高效写入

 

其实本质还是缓冲二字

他们内部都有一个缓冲区,就是一个字符数组

BufferedReader 会尽可能多的将数据读取到自己的缓冲区,然后提供的read方法从缓冲区读取

BufferedWriter 会先将数据写入到自己的内部缓冲区,从而写入的效率将会大大提升,然后批量的将数据实际写入

 

 

BufferedReader  BufferedWriter 也是装饰器模式
不过他是简化版的装饰器模式
没有抽象的装饰器角色
BufferedReader 和 BufferedWriter 既充当了抽象的装饰器角色,又充当了装饰器实体角色
从下面的声明以及内部变量能看出来一点端倪(不是说  是你还有你  就一定是装饰器,还是要根据下面的业务逻辑的)
是你还有你
而且,他的确是装饰器模式,下面会简单介绍
image_5b9a4aee_1d00

回到顶部

构造方法


关键成员变量
image_5b9a4aee_6a9

首先:
BufferedReader  需要 Reader 作为参数
BufferedWriter   需要 Writer 作为参数
其次:
可选的设置缓冲区的大小,不设置则使用默认值

所以, BufferedReader 和 BufferedWriter 各有两个构造方法 

 

image_5b9a4aee_40d1

 

回到顶部

BufferedReader 其他方法

 


read
提供了两个版本的read方法

int read()

          读取单个字符

int read(char[] cbuf, int off, int len)

          将字符读入数组的某一部分,写入len个 到cbuf 中的off偏移量处

 

之所以说BufferedReader是装饰器模式不仅仅是"是你还有你"
read内部,实际上使用的是fill()用来读取真正的数据到缓冲区内
fill 里面用了 Reader in
image_5b9a4aee_5c21

 

 

 

支持标记

markSupported  返回true

mark

reset

 

 

String readLine()
读取一个文本行
通过下列字符之一即可认为某行已终止:换行 ('\n')、回车 ('\r') 或回车后直接跟着换行 

 

lines方法
jdk8 中新增的方法 
返回一个由 BufferedReader中的line组成的Stream
image_5b9a4aee_5f45

 

 

BufferedReader也例行提供了

skip

ready

close

 

 

回到顶部

BufferedWriter  其他方法

 

write

void write(char[] cbuf, int off, int len)

          写入字符数组的某一部分

void write(int c)

          写入单个字符。

void write(String s, int off, int len)

          写入字符串的某一部分

 

public void newLine()

             throws IOException

写入一个行分隔符  行分隔符字符串由系统属性 line.separator 定义,并且不一定是单个新行 ('\n') 符

 

close 与 flush
既然是缓冲写字符
所以必然要有有效的刷新操作,内部通过out来进行刷新
close方法会将缓冲区的数据全部刷新,然后out置空

image_5b9a4aef_7f51

image_5b9a4aef_68b2

 

 

回到顶部

总结

 

BufferedReader  和 BufferedWriter 的逻辑含义很明确

使用内部的缓冲区加快速度

BufferedReader 尽可能多的从底层读取数据到缓冲区,所以加快了read方法的调用

BufferedWriter方法数据先是直接写入到缓冲区,所以write方法的速度也显著提高

 

实现缓冲的根本就在于内部的字符数组

 

除非的确不需要,否则应该尽可能的使用缓冲,  比如:

BufferedReader in

   = new BufferedReader(new FileReader("foo.in"));

 

可以指定缓冲区的大小,或者接受默认的大小 在大多数情况下,默认值就足够大了

 

原文出处:https://www.cnblogs.com/noteless/p/9642568.html

點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺(jué)得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫(xiě)下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開(kāi)微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消