|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
java.lang.Object java.io.InputStream java.io.FilterInputStream
public class FilterInputStream
FilterInputStream
套件含其他一些輸入串流,它將這些串流用作其基本資料源,它可以直接傳輸資料或提供一些額外的功能。FilterInputStream
類別本身只是簡單地覆寫那些將所有請求傳遞給所包含輸入串流的 InputStream
的所有方法。FilterInputStream
的子類別可進一步覆寫這些方法中的一些方法,並且還可以提供一些額外的方法和欄位。
欄位摘要 | |
---|---|
protected InputStream |
in
要過濾的輸入串流。 |
建構子摘要 | |
---|---|
protected |
FilterInputStream(InputStream in)
將參數 in 分派給欄位 this.in ,以便記住它供以後使用,通過這種方式創建一個 FilterInputStream 。 |
方法摘要 | |
---|---|
int |
available()
返回下一次對此輸入串流調用的方法可以不受阻塞地從此輸入串流讀取(或跳過)的估計剩餘位元組數。 |
void |
close()
關閉此輸入串流並釋放與此串流關聯的所有系統資源。 |
void |
mark(int readlimit)
在輸入串流中的當前位置上作標記。 |
boolean |
markSupported()
測試此輸入串流是否支持 mark 和 reset 方法。 |
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 |
欄位詳細資訊 |
---|
protected volatile InputStream in
建構子詳細資訊 |
---|
protected FilterInputStream(InputStream in)
in
分派給欄位 this.in
,以便記住它供以後使用,通過這種方式創建一個 FilterInputStream
。
in
- 底層輸入串流,如果要在沒有底層串流的情況下創建此實例,則該參數為 null
。方法詳細資訊 |
---|
public int read() throws IOException
0
到 255
範圍內的 int
位元組值。如果因為已經到達串流末尾而沒有位元組可用,則返回 -1
。在輸入資料可用、檢測到串流末尾或拋出異常之前,此方法將一直阻塞。
此方法只執行 in.read()
並返回結果。
InputStream
中的 read
-1
。
IOException
- 如果發生 I/O 錯誤。in
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)
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
- 如果 b
為 null
。
IndexOutOfBoundsException
- 如果 off
為負、len
為負,或者 len
大於 b.length - off
IOException
- 如果發生 I/O 錯誤。in
public long skip(long n) throws IOException
n
個位元組。出於各種原因,skip
方法結束時跳過的位元組數可能小於該數,也可能為 0
。導致這種情況的原因很多,跳過 n
個位元組之前已到達檔案末尾只是其中一種可能。返回跳過的實際位元組數。如果 n
為負,則不跳過任何位元組。
此類別的 skip
方法創建一個 byte 陣列,然後重複將位元組讀入其中,直到讀夠 n
個位元組或已到達串流末尾為止。建議子類別提供此方法更為有效的實作。例如,可依賴搜尋能力的實作。
此方法只執行 in.skip(n)
。
InputStream
中的 skip
n
- 要跳過的位元組數。
IOException
- 如果串流不支持搜尋,或者發生其他 I/O 錯誤。public int available() throws IOException
此方法返回 in
.available() 的結果。
InputStream
中的 available
IOException
- 如果發生 I/O 錯誤。public void close() throws IOException
in.close()
。
Closeable
中的 close
InputStream
中的 close
IOException
- 如果發生 I/O 錯誤。in
public void mark(int readlimit)
reset
方法的後續調用將此串流重新定位在最後標記的位置上,以便後續讀取操作重新讀取相同的位元組。
readlimit
參數告知此輸入串流在標記位置無效之前允許讀取的位元組數。
此方法只執行 in.mark(readlimit)
。
InputStream
中的 mark
readlimit
- 在標記位置變得無效前可以讀取位元組的最大限制。in
,
reset()
public void reset() throws IOException
mark
方法時的位置。
此方法只執行 in.reset()
。
在需要提前讀取一小部分資料以查看串流中有什麼的情況下,可以使用串流的標記。通過調用通用解析器常常最容易做到這一點。如果串流屬於通過解析處理的型別,那麼解析起來就很容易。如果串流不屬於那種型別,那麼解析器應該在解析失敗時拋出一個異常。如果這發生在 readlimit 個位元組內,那麼它允許外部程式碼重置串流,並嘗試另一種解析器。
InputStream
中的 reset
IOException
- 如果已經標記了該串流,或者標記已經無效。in
,
mark(int)
public boolean markSupported()
mark
和 reset
方法。此方法只執行 in.markSupported()
。
InputStream
中的 markSupported
mark
和 reset
方法,則返回 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。