JavaTM 2 Platform
Standard Ed. 6

java.io
類別 Reader

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

public abstract class Reader
extends Object
implements Readable, Closeable

用於讀取字元串流的抽象類別。子類別必須實作的方法只有 read(char[], int, int) 和 close()。但是,多數子類別將覆寫此處定義的一些方法,以提供更高的效率和/或其他功能。

從以下版本開始:
JDK1.1
另請參見:
BufferedReader, LineNumberReader, CharArrayReader, InputStreamReader, FileReader, FilterReader, PushbackReader, PipedReader, StringReader, Writer

欄位摘要
protected  Object lock
          用於同步針對此串流的操作的物件。
 
建構子摘要
protected Reader()
          創建一個新的字元串流 reader,其重要部分將同步其自身的 reader。
protected Reader(Object lock)
          創建一個新的字元串流 reader,其重要部分將同步給定的物件。
 
方法摘要
abstract  void close()
          關閉該串流並釋放與之關聯的所有資源。
 void mark(int readAheadLimit)
          標記串流中的當前位置。
 boolean markSupported()
          判斷此串流是否支持 mark() 操作。
 int read()
          讀取單個字元。
 int read(char[] cbuf)
          將字元讀入陣列。
abstract  int read(char[] cbuf, int off, int len)
          將字元讀入陣列的某一部分。
 int read(CharBuffer target)
          試圖將字元讀入指定的字元緩衝區。
 boolean ready()
          判斷是否準備讀取此串流。
 void reset()
          重置該串流。
 long skip(long n)
          跳過字元。
 
從類別 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

欄位詳細資訊

lock

protected Object lock
用於同步針對此串流的操作的物件。為了提高效率,字元串流對象可以使用其自身以外的物件來保護重要部分。因此,子類別應使用此欄位中的物件,而不是 this 或者同步的方法。

建構子詳細資訊

Reader

protected Reader()
創建一個新的字元串流 reader,其重要部分將同步其自身的 reader。


Reader

protected Reader(Object lock)
創建一個新的字元串流 reader,其重要部分將同步給定的物件。

參數:
lock - 要同步的物件。
方法詳細資訊

read

public int read(CharBuffer target)
         throws IOException
試圖將字元讀入指定的字元緩衝區。緩衝區可照原樣用作字元的存儲資源庫:所做的唯一改變是 put 操作的結果。不對緩衝區執行翻轉或重繞操作。

指定者:
介面 Readable 中的 read
參數:
target - 要將字元讀入的緩衝區
返回:
添加到緩衝區的字元數量,如果此字元源位於緩衝區末端,則返回 -1
拋出:
IOException - 如果發生 I/O 錯誤
NullPointerException - 如果目標為空
ReadOnlyBufferException - 如果目標是一個只讀緩衝區
從以下版本開始:
1.5

read

public int read()
         throws IOException
讀取單個字元。在字元可用、發生 I/O 錯誤或者已到達串流的末尾前,此方法一直阻塞。

用於支持高效的單字元輸入的子類別應覆寫此方法。

返回:
作為整數讀取的字元,範圍在 0 到 65535 之間 (0x00-0xffff),如果已到達串流的末尾,則返回 -1
拋出:
IOException - 如果發生 I/O 錯誤

read

public int read(char[] cbuf)
         throws IOException
將字元讀入陣列。在某個輸入可用、發生 I/O 錯誤或者已到達串流的末尾前,此方法一直阻塞。

參數:
cbuf - 目標緩衝區
返回:
讀取的字元數,如果已到達串流的末尾,則返回 -1
拋出:
IOException - 如果發生 I/O 錯誤

read

public abstract int read(char[] cbuf,
                         int off,
                         int len)
                  throws IOException
將字元讀入陣列的某一部分。在某個輸入可用、發生 I/O 錯誤或者到達串流的末尾前,此方法一直阻塞。

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

skip

public long skip(long n)
          throws IOException
跳過字元。在某個字元可用、發生 I/O 錯誤或者已到達串流的末尾前,此方法一直阻塞。

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

ready

public boolean ready()
              throws IOException
判斷是否準備讀取此串流。

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

markSupported

public boolean markSupported()
判斷此串流是否支持 mark() 操作。預設實作始終返回 false。子類別應覆寫此方法。

返回:
當且僅當此串流支持此 mark 操作時,返回 true。

mark

public void mark(int readAheadLimit)
          throws IOException
標記串流中的當前位置。對 reset() 的後續調用將嘗試將該串流重新定位到此點。並不是所有的字元輸入串流都支持 mark() 操作。

參數:
readAheadLimit - 在仍保留該標記的情況下,對可讀取字元數量的限制。在讀取這樣多的字元後,嘗試重置串流可能會失敗。
拋出:
IOException - 如果該串流不支持 mark(),或者發生一些其他 I/O 錯誤

reset

public void reset()
           throws IOException
重置該串流。如果已標記該串流,則嘗試在該標記處重新定位該串流。如果已標記該串流,則以適用於特定串流的某種方式嘗試重置該串流,例如,通過將該串流重新定位到其起始點。並不是所有的字元輸入串流都支持 reset() 操作,有些支持 reset() 而不支持 mark()。

拋出:
IOException - 如果尚未標記串流,或者該標記已失效,或者該串流不支持 reset(),或者發生一些其他 I/O 錯誤

close

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

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

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

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