JavaTM 2 Platform
Standard Ed. 6

java.io
類別 BufferedReader

java.lang.Object
  繼承者 java.io.Reader
      繼承者 java.io.BufferedReader
所有已實作的介面:
Closeable, Readable
直接已知子類別:
LineNumberReader

public class BufferedReader
extends Reader

從字元輸入串流中讀取文本,緩衝各個字元,從而實作字元、陣列和行的高效讀取。

可以指定緩衝區的大小,或者可使用預設的大小。大多數情況下,預設值就足夠大了。

通常,Reader 所作的每個讀取請求都會導致對底層字元或位元組串流進行相應的讀取請求。因此,建議用 BufferedReader 套件裝所有其 read() 操作可能開銷很高的 Reader(如 FileReader 和 InputStreamReader)。例如,

 BufferedReader in
   = new BufferedReader(new FileReader("foo.in"));
 
將緩衝指定檔案的輸入。如果沒有緩衝,則每次調用 read() 或 readLine() 都會導致從檔案中讀取位元組,並將其轉換為字元後返回,而這是極其低效的。

通過用合適的 BufferedReader 替代每個 DataInputStream,可以對將 DataInputStream 用於文字輸入的程序進行本地化。

從以下版本開始:
JDK1.1
另請參見:
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
 

建構子詳細資訊

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
讀取單個字元。

覆寫:
類別 Reader 中的 read
返回:
作為一個整數(其範圍從 0 到 65535 (0x00-0xffff))讀入的字元,如果已到達串流末尾,則返回 -1
拋出:
IOException - 如果發生 I/O 錯誤

read

public int read(char[] cbuf,
                int off,
                int len)
         throws IOException
將字元讀入陣列的某一部分。

此方法實作 Reader 類別相應 read 方法的常規協定。另一個便捷之處在於,它將通過重複地調用底層串流的 read 方法,嘗試讀取盡可能多的字元。這種迭代的 read 會一直繼續下去,直到滿足以下條件之一:

如果第一次對底層串流調用 read 返回 -1(指示檔案末尾),則此方法返回 -1。否則此方法返回實際讀取的字元數。

鼓勵(但不是必須)此類別的各個子類別以相同的方式嘗試讀取盡可能多的字元。

一般來說,此方法從此串流的字元緩衝區中獲得字元,根據需要從底層串流中填充緩衝區。但是,如果緩衝區為空、標記無效,並且所請求的長度至少與緩衝區相同,則此方法將直接從底層串流中將字元讀取到給定的陣列中。因此多餘的 BufferedReader 將不必複製資料。

指定者:
類別 Reader 中的 read
參數:
cbuf - 目標緩衝區
off - 開始存儲字元處的偏移量
len - 要讀取的最大字元數
返回:
讀取的字元數,如果已到達串流末尾,則返回 -1
拋出:
IOException - 如果發生 I/O 錯誤

readLine

public String readLine()
                throws IOException
讀取一個文本行。通過下列字元之一即可認為某行已終止:換行 ('\n')、回車(Enter) ('\r') 或回車(Enter)後直接跟著換行。

返回:
包含該行內容的字元串,不包含任何行終止符,如果已到達串流末尾,則返回 null
拋出:
IOException - 如果發生 I/O 錯誤

skip

public long skip(long n)
          throws IOException
跳過字元。

覆寫:
類別 Reader 中的 skip
參數:
n - 要跳過的字元數
返回:
實際跳過的字元數
拋出:
IllegalArgumentException - 如果 n 為負。
IOException - 如果發生 I/O 錯誤

ready

public boolean ready()
              throws IOException
判斷此串流是否已準備好被讀取。如果緩衝區不為空,或者底層字元串流已準備就緒,則緩衝的字元串流準備就緒。

覆寫:
類別 Reader 中的 ready
返回:
如果保證下一個 read() 不阻塞輸入,則返回 True,否則返回 false。注意,返回 false 並不保證阻塞下一次讀取。
拋出:
IOException - 如果發生 I/O 錯誤

markSupported

public boolean markSupported()
判斷此串流是否支持 mark() 操作(它一定支持)。

覆寫:
類別 Reader 中的 markSupported
返回:
當且僅當此串流支持此 mark 操作時,返回 true。

mark

public void mark(int readAheadLimit)
          throws IOException
標記串流中的當前位置。對 reset() 的後續調用將嘗試將該串流重新定位到此點。

覆寫:
類別 Reader 中的 mark
參數:
readAheadLimit - 在仍保留該標記的情況下,對可讀取字元數量的限制。在讀取達到或超過此限制的字元後,嘗試重置串流可能會失敗。限制值大於輸入緩衝區的大小將導致分派一個新緩衝區,其大小不小於該限制值。因此應該小心使用較大的值。
拋出:
IllegalArgumentException - 如果 readAheadLimit < 0
IOException - 如果發生 I/O 錯誤

reset

public void reset()
           throws IOException
將串流重置到最新的標記。

覆寫:
類別 Reader 中的 reset
拋出:
IOException - 如果從未標記過該串流,或者標記已失效。

close

public void close()
           throws IOException
從類別 Reader 複製的描述
關閉該串流並釋放與之關聯的所有資源。在關閉該串流後,再調用 read()、ready()、mark()、reset() 或 skip() 將拋出 IOException。關閉以前關閉的串流無效。

指定者:
介面 Closeable 中的 close
指定者:
類別 Reader 中的 close
拋出:
IOException - 如果發生 I/O 錯誤

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only