功能簡介
BufferedReader 從字符輸入流中讀取文本,內部緩沖各個字符,從而實現字符、數組和行的高效讀取
BufferedWriter 將文本寫入字符輸出流,內部緩沖各個字符,從而提供單個字符、數組和字符串的高效寫入
其實本質還是緩沖二字
他們內部都有一個緩沖區,就是一個字符數組
BufferedReader 會盡可能多的將數據讀取到自己的緩沖區,然后提供的read方法從緩沖區讀取
BufferedWriter 會先將數據寫入到自己的內部緩沖區,從而寫入的效率將會大大提升,然后批量的將數據實際寫入
|
BufferedReader BufferedWriter 也是裝飾器模式 不過他是簡化版的裝飾器模式 沒有抽象的裝飾器角色 BufferedReader 和 BufferedWriter 既充當了抽象的裝飾器角色,又充當了裝飾器實體角色 從下面的聲明以及內部變量能看出來一點端倪(不是說 是你還有你 就一定是裝飾器,還是要根據下面的業務邏輯的) 是你還有你 而且,他的確是裝飾器模式,下面會簡單介紹 |
![]() |
構造方法
關鍵成員變量![]() |
首先: BufferedReader 需要 Reader 作為參數 BufferedWriter 需要 Writer 作為參數 其次: 可選的設置緩沖區的大小,不設置則使用默認值
所以, BufferedReader 和 BufferedWriter 各有兩個構造方法
![]() |
BufferedReader 其他方法
支持標記 |
markSupported 返回true
mark
reset
|
String readLine() 讀取一個文本行 通過下列字符之一即可認為某行已終止:換行 ('\n')、回車 ('\r') 或回車后直接跟着換行 |
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') 符 |
總結
BufferedReader 和 BufferedWriter 的邏輯含義很明確
使用內部的緩沖區加快速度
BufferedReader 盡可能多的從底層讀取數據到緩沖區,所以加快了read方法的調用
BufferedWriter方法數據先是直接寫入到緩沖區,所以write方法的速度也顯著提高
實現緩沖的根本就在於內部的字符數組
除非的確不需要,否則應該盡可能的使用緩沖, 比如:
BufferedReader in
= new BufferedReader(new FileReader("foo.in"));
可以指定緩沖區的大小,或者接受默認的大小 在大多數情況下,默認值就足夠大了