從字符輸入流中讀取文本并將字符存入緩沖區(qū)以便能提供字符、數(shù)組和線段的高效讀取。
可指定緩沖區(qū)尺寸或使用缺省尺寸。該缺省尺寸對大多數(shù)用途來說是足夠的。
通常, Reader 的每個讀請求引起由基本字符或字節(jié)流組成的相關(guān)的讀請求。因此,建議將 BufferedReader 和代價太高的 read() 操作的 Reader 來打包,如
FileReaders 和 InputStreamReaders 。例如,
BufferedReader in
= new BufferedReader(new FileReader("foo.in"));
緩沖指定文件的輸入。若無緩沖,則每個 read() 或 readLine() 調(diào)用將字節(jié)從文件中讀出、轉(zhuǎn)換為字符,然后返回,這種處理方法的效率是非常低的。 通過用適當(dāng)?shù)?BufferReader 替換每個 DatainputStream 可以使使用
DataInputStream 作為文本輸入的程序本地化。
類 java.io.BufferedReader
java.lang.Object
|
+----java.io.Reader
|
+----java.io.BufferedReader
- public class BufferedReader
- extends Reader
- 下列類的父類:
- LineNumberReader
- 出現(xiàn)于:
- JDK1.1
- 參見:
- FileReader, InputStreamReader
構(gòu)造子索引
- BufferedReader(Reader)
- 創(chuàng)建使用缺省尺寸輸入緩沖區(qū)的緩沖字符輸入流。
- BufferedReader(Reader, int)
- 創(chuàng)建使用指定尺寸輸入緩沖區(qū)的緩沖字符輸入流。
方法索引
- close()
- 關(guān)閉流。
- mark(int)
- 標記此流的當(dāng)前位置。
- markSupported()
- 報告此流是否支持 mark() 實現(xiàn)的操作。
- read()
- 讀取單一字符。
- read(char[], int, int)
- 將若干字符讀入一個數(shù)組中。
- readLine()
- 讀取一文本行。
- ready()
- 報告此流是否讀就緒。
- reset()
- 將該流復(fù)位為最近標記。
- skip(long)
- 跳過若干字符。
構(gòu)造子
BufferedReader
public BufferedReader(Reader in,
int sz)
- 創(chuàng)建使用指定尺寸輸入緩沖區(qū)的緩沖字符輸入流。
- 參數(shù):
- in - 一個 Reader
- sz - 輸入緩沖尺寸
- 拋出:
IllegalArgumentException
- 若 sz <= 0
BufferedReader
public BufferedReader(Reader in)
- 創(chuàng)建使用缺省尺寸輸入緩沖區(qū)的緩沖字符輸入流。
- 參數(shù):
- in - 一個 Reader
方法
read
public int read() throws IOException
- 讀取單一字符。
- 拋出:
OException
- 如果發(fā)生一 I/O 錯誤。
- 覆蓋:
- 類
Reader 中的 read
read
public int read(char cbuf[],
int off,
int len) throws IOException
- 將若干字符讀入一個數(shù)組中。
通常該方法從該流的字符緩沖區(qū)中獲取字符,必要時用基本流填充。然而,
若緩沖區(qū)為空、標記無效、請求長度至少與緩沖區(qū)相同大,則該方法將從基本流中將字符直接讀入給定數(shù)組。因此冗余的 BufferedReader
不復(fù)制不必要的數(shù)據(jù)。
- 參數(shù):
- cbuf - 目的緩沖區(qū)
- off - 開始存儲字符的偏移量。
- len - 讀取的最大字符數(shù)
- 返回值:
- 讀取字節(jié)數(shù),若已讀到流尾則返回 -1 。
- 拋出:
OException
- 如果發(fā)生一 I/O 錯誤。
- 覆蓋:
- 類
Reader 中的
read
readLine
public String readLine() throws IOException
- 讀取一文本行。換行 ('\n')、回車 ('\r') 或緊跟著換行的回車符表示一行的終止。
- 返回值:
- 包含行內(nèi)容但不包括行終止符的字符串, 若已到達流尾則為 null 。
- 拋出:
OException
- 如果發(fā)生一 I/O 錯誤。
skip
public long skip(long n) throws IOException
- 跳過若干字符。
- 參數(shù):
- n - 待跳過的字節(jié)數(shù)
- 返回值:
- 實際跳過的字符數(shù)
- 拋出:
OException
- 如果發(fā)生一 I/O 錯誤。
- 覆蓋:
- 類
Reader 中的 skip
ready
public boolean ready() throws IOException
- 報告此流是否已準備讀。若緩沖區(qū)不為空,或者基本字符流就緒,就表明緩沖字符流就緒。
- 拋出:
OException
- 如果發(fā)生一 I/O 錯誤。
- 覆蓋:
- 類
Reader 中的 ready
markSupported
public boolean markSupported()
- 報告此流是否支持 mark() 操作和支持哪一個操作。
- 覆蓋:
- 類
Reader
中的
markSupported
mark
public void mark(int readAheadLimit) throws IOException
- 標記此流的當(dāng)前位置。接著調(diào)用 reset() 重新將流定位到該點。
- 參數(shù):
- readAheadLimit - 保持標記不便時,讀取的字符數(shù)的限制。讀取這些字符之后,復(fù)位流的試圖可以失敗。限制值大于輸入緩沖區(qū)將使所分配緩沖區(qū)的尺寸不小于限制。因此慎用大值。
- 拋出:
IllegalArgumentException
- 若 readAheadLimit <0
- Throws: OException
- 如果發(fā)生一 I/O 錯誤。
- 覆蓋:
- 類
Reader 中的 mark
reset
public void reset() throws IOException
- 將該流復(fù)位為最近標記。
- 拋出:
OException
- 若該流仍未標記或標記非法
- 覆蓋:
- 類
Reader 中的
reset 。
close
public void close() throws IOException
- 關(guān)閉流。
- 拋出:
OException
- 如果發(fā)生一 I/O 錯誤。
- 覆蓋:
- 類
Reader 中的 close 。