|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
java.lang.Object java.io.Reader java.io.BufferedReader
public class BufferedReader
從字元輸入串流中讀取文本,緩衝各個字元,從而實作字元、陣列和行的高效讀取。
可以指定緩衝區的大小,或者可使用預設的大小。大多數情況下,預設值就足夠大了。
通常,Reader 所作的每個讀取請求都會導致對底層字元或位元組串流進行相應的讀取請求。因此,建議用 BufferedReader 套件裝所有其 read() 操作可能開銷很高的 Reader(如 FileReader 和 InputStreamReader)。例如,
BufferedReader in = new BufferedReader(new FileReader("foo.in"));將緩衝指定檔案的輸入。如果沒有緩衝,則每次調用 read() 或 readLine() 都會導致從檔案中讀取位元組,並將其轉換為字元後返回,而這是極其低效的。
通過用合適的 BufferedReader 替代每個 DataInputStream,可以對將 DataInputStream 用於文字輸入的程序進行本地化。
FileReader
,
InputStreamReader
欄位摘要 |
---|
從類別 java.io.Reader 繼承的欄位 |
---|
lock |
建構子摘要 | |
---|---|
BufferedReader(Reader in)
創建一個使用預設大小輸入緩衝區的緩衝字元輸入串流。 |
|
BufferedReader(Reader in,
int sz)
創建一個使用指定大小輸入緩衝區的緩衝字元輸入串流。 |
方法摘要 | |
---|---|
void |
close()
關閉該串流並釋放與之關聯的所有資源。 |
void |
mark(int readAheadLimit)
標記串流中的當前位置。 |
boolean |
markSupported()
判斷此串流是否支持 mark() 操作(它一定支持)。 |
int |
read()
讀取單個字元。 |
int |
read(char[] cbuf,
int off,
int len)
將字元讀入陣列的某一部分。 |
String |
readLine()
讀取一個文本行。 |
boolean |
ready()
判斷此串流是否已準備好被讀取。 |
void |
reset()
將串流重置到最新的標記。 |
long |
skip(long n)
跳過字元。 |
從類別 java.io.Reader 繼承的方法 |
---|
read, read |
從類別 java.lang.Object 繼承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
建構子詳細資訊 |
---|
public BufferedReader(Reader in, int sz)
in
- 一個 Readersz
- 輸入緩衝區的大小
IllegalArgumentException
- 如果 sz <= 0public BufferedReader(Reader in)
in
- 一個 Reader方法詳細資訊 |
---|
public int read() throws IOException
Reader
中的 read
IOException
- 如果發生 I/O 錯誤public int read(char[] cbuf, int off, int len) throws IOException
此方法實作
類別相應 Reader
方法的常規協定。另一個便捷之處在於,它將通過重複地調用底層串流的 read
read
方法,嘗試讀取盡可能多的字元。這種迭代的 read
會一直繼續下去,直到滿足以下條件之一:
read
方法返回 -1
,指示檔案末尾(end-of-file),或者
ready
方法返回 false
,指示將阻塞後續的輸入請求。
read
返回 -1
(指示檔案末尾),則此方法返回 -1
。否則此方法返回實際讀取的字元數。
鼓勵(但不是必須)此類別的各個子類別以相同的方式嘗試讀取盡可能多的字元。
一般來說,此方法從此串流的字元緩衝區中獲得字元,根據需要從底層串流中填充緩衝區。但是,如果緩衝區為空、標記無效,並且所請求的長度至少與緩衝區相同,則此方法將直接從底層串流中將字元讀取到給定的陣列中。因此多餘的 BufferedReader
將不必複製資料。
Reader
中的 read
cbuf
- 目標緩衝區off
- 開始存儲字元處的偏移量len
- 要讀取的最大字元數
IOException
- 如果發生 I/O 錯誤public String readLine() throws IOException
IOException
- 如果發生 I/O 錯誤public long skip(long n) throws IOException
Reader
中的 skip
n
- 要跳過的字元數
IllegalArgumentException
- 如果 n
為負。
IOException
- 如果發生 I/O 錯誤public boolean ready() throws IOException
Reader
中的 ready
IOException
- 如果發生 I/O 錯誤public boolean markSupported()
Reader
中的 markSupported
public void mark(int readAheadLimit) throws IOException
Reader
中的 mark
readAheadLimit
- 在仍保留該標記的情況下,對可讀取字元數量的限制。在讀取達到或超過此限制的字元後,嘗試重置串流可能會失敗。限制值大於輸入緩衝區的大小將導致分派一個新緩衝區,其大小不小於該限制值。因此應該小心使用較大的值。
IllegalArgumentException
- 如果 readAheadLimit < 0
IOException
- 如果發生 I/O 錯誤public void reset() throws IOException
Reader
中的 reset
IOException
- 如果從未標記過該串流,或者標記已失效。public void close() throws IOException
Reader
複製的描述
Closeable
中的 close
Reader
中的 close
IOException
- 如果發生 I/O 錯誤
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。