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