JavaTM 2 Platform
Standard Ed. 6

java.io
類別 FilterInputStream

java.lang.Object
  繼承者 java.io.InputStream
      繼承者 java.io.FilterInputStream
所有已實作的介面:
Closeable
直接已知子類別:
BufferedInputStream, CheckedInputStream, CipherInputStream, DataInputStream, DeflaterInputStream, DigestInputStream, InflaterInputStream, LineNumberInputStream, ProgressMonitorInputStream, PushbackInputStream

public class FilterInputStream
extends InputStream

FilterInputStream 套件含其他一些輸入串流,它將這些串流用作其基本資料源,它可以直接傳輸資料或提供一些額外的功能。FilterInputStream 類別本身只是簡單地覆寫那些將所有請求傳遞給所包含輸入串流的 InputStream 的所有方法。FilterInputStream 的子類別可進一步覆寫這些方法中的一些方法,並且還可以提供一些額外的方法和欄位。

從以下版本開始:
JDK1.0

欄位摘要
protected  InputStream in
          要過濾的輸入串流。
 
建構子摘要
protected FilterInputStream(InputStream in)
          將參數 in 分派給欄位 this.in,以便記住它供以後使用,通過這種方式創建一個 FilterInputStream
 
方法摘要
 int available()
          返回下一次對此輸入串流調用的方法可以不受阻塞地從此輸入串流讀取(或跳過)的估計剩餘位元組數。
 void close()
          關閉此輸入串流並釋放與此串流關聯的所有系統資源。
 void mark(int readlimit)
          在輸入串流中的當前位置上作標記。
 boolean markSupported()
          測試此輸入串流是否支持 markreset 方法。
 int read()
          從此輸入串流中讀取下一個資料位元組。
 int read(byte[] b)
          從此輸入串流中將 byte.length 個位元組的資料讀入一個 byte 陣列中。
 int read(byte[] b, int off, int len)
          從此輸入串流中將 len 個位元組的資料讀入一個 byte 陣列中。
 void reset()
          將此串流重新定位到對此輸入串流最後調用 mark 方法時的位置。
 long skip(long n)
          跳過和丟棄此輸入串流中資料的 n 個位元組。
 
從類別 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

欄位詳細資訊

in

protected volatile InputStream in
要過濾的輸入串流。

建構子詳細資訊

FilterInputStream

protected FilterInputStream(InputStream in)
將參數 in 分派給欄位 this.in,以便記住它供以後使用,通過這種方式創建一個 FilterInputStream

參數:
in - 底層輸入串流,如果要在沒有底層串流的情況下創建此實例,則該參數為 null
方法詳細資訊

read

public int read()
         throws IOException
從此輸入串流中讀取下一個資料位元組。返回一個 0255 範圍內的 int 位元組值。如果因為已經到達串流末尾而沒有位元組可用,則返回 -1。在輸入資料可用、檢測到串流末尾或拋出異常之前,此方法將一直阻塞。

此方法只執行 in.read() 並返回結果。

指定者:
類別 InputStream 中的 read
返回:
下一個資料位元組;如果已到達串流末尾,則返回 -1
拋出:
IOException - 如果發生 I/O 錯誤。
另請參見:
in

read

public int read(byte[] b)
         throws IOException
從此輸入串流中將 byte.length 個位元組的資料讀入一個 byte 陣列中。在某些輸入可用之前,此方法將阻塞。

此方法只執行 read(b, 0, b.length) 調用並返回結果。注意到它 執行 in.read(b) 很重要;FilterInputStream 的某些子類別依賴於實際使用的實作策略。

覆寫:
類別 InputStream 中的 read
參數:
b - 存儲讀取資料的緩衝區。
返回:
讀入緩衝區的位元組總數,如果因為已經到達串流末尾而沒有更多的資料,則返回 -1
拋出:
IOException - 如果發生 I/O 錯誤。
另請參見:
read(byte[], int, int)

read

public int read(byte[] b,
                int off,
                int len)
         throws IOException
從此輸入串流中將 len 個位元組的資料讀入一個 byte 陣列中。如果 len 不為 0,則在輸入可用前,此方法將阻塞;否則,不讀取任何位元組並且返回 0

此方法只執行 in.read(b, off, len) 並返回結果。

覆寫:
類別 InputStream 中的 read
參數:
b - 存儲讀取資料的緩衝區。
off - 目標陣列 b 中的起始偏移量。
len - 讀取的最大位元組數。
返回:
讀入緩衝區的位元組總數,如果因為已經到達串流末尾而沒有更多的資料,則返回 -1
拋出:
NullPointerException - 如果 bnull
IndexOutOfBoundsException - 如果 off 為負、len 為負,或者 len 大於 b.length - off
IOException - 如果發生 I/O 錯誤。
另請參見:
in

skip

public long skip(long n)
          throws IOException
跳過和丟棄此輸入串流中資料的 n 個位元組。出於各種原因,skip 方法結束時跳過的位元組數可能小於該數,也可能為 0。導致這種情況的原因很多,跳過 n 個位元組之前已到達檔案末尾只是其中一種可能。返回跳過的實際位元組數。如果 n 為負,則不跳過任何位元組。

此類別的 skip 方法創建一個 byte 陣列,然後重複將位元組讀入其中,直到讀夠 n 個位元組或已到達串流末尾為止。建議子類別提供此方法更為有效的實作。例如,可依賴搜尋能力的實作。

此方法只執行 in.skip(n)

覆寫:
類別 InputStream 中的 skip
參數:
n - 要跳過的位元組數。
返回:
跳過的實際位元組數。
拋出:
IOException - 如果串流不支持搜尋,或者發生其他 I/O 錯誤。

available

public int available()
              throws IOException
返回下一次對此輸入串流調用的方法可以不受阻塞地從此輸入串流讀取(或跳過)的估計剩餘位元組數。下一個調用者可能是同一個執行緒,也可能是另一個執行緒。一次讀取或跳過此數量個位元組不會發生阻塞,但讀取或跳過的位元組可能小於該數。

此方法返回 in.available() 的結果。

覆寫:
類別 InputStream 中的 available
返回:
可以不受阻塞地從此輸入串流中讀取(或跳過)的估計位元組數。
拋出:
IOException - 如果發生 I/O 錯誤。

close

public void close()
           throws IOException
關閉此輸入串流並釋放與此串流關聯的所有系統資源。此方法只執行 in.close()

指定者:
介面 Closeable 中的 close
覆寫:
類別 InputStream 中的 close
拋出:
IOException - 如果發生 I/O 錯誤。
另請參見:
in

mark

public void mark(int readlimit)
在輸入串流中的當前位置上作標記。reset 方法的後續調用將此串流重新定位在最後標記的位置上,以便後續讀取操作重新讀取相同的位元組。

readlimit 參數告知此輸入串流在標記位置無效之前允許讀取的位元組數。

此方法只執行 in.mark(readlimit)

覆寫:
類別 InputStream 中的 mark
參數:
readlimit - 在標記位置變得無效前可以讀取位元組的最大限制。
另請參見:
in, reset()

reset

public void reset()
           throws IOException
將此串流重新定位到對此輸入串流最後調用 mark 方法時的位置。

此方法只執行 in.reset()

在需要提前讀取一小部分資料以查看串流中有什麼的情況下,可以使用串流的標記。通過調用通用解析器常常最容易做到這一點。如果串流屬於通過解析處理的型別,那麼解析起來就很容易。如果串流不屬於那種型別,那麼解析器應該在解析失敗時拋出一個異常。如果這發生在 readlimit 個位元組內,那麼它允許外部程式碼重置串流,並嘗試另一種解析器。

覆寫:
類別 InputStream 中的 reset
拋出:
IOException - 如果已經標記了該串流,或者標記已經無效。
另請參見:
in, mark(int)

markSupported

public boolean markSupported()
測試此輸入串流是否支持 markreset 方法。此方法只執行 in.markSupported()

覆寫:
類別 InputStream 中的 markSupported
返回:
如果此串流型別支持 markreset 方法,則返回 true;否則返回 false
另請參見:
in, InputStream.mark(int), InputStream.reset()

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

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