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