鴻蒙OS FilterInputStream

2022-10-19 17:21 更新

FilterInputStream

java.lang.Object

|---java.io.InputStream

|---|---java.io.FilterInputStream

public class FilterInputStream
extends InputStream

FilterInputStream 包含一些其他輸入流,它用作其基本數(shù)據(jù)源,可能沿途轉(zhuǎn)換數(shù)據(jù)或提供附加功能。 FilterInputStream 類本身只是簡單地覆蓋 InputStream 的所有方法,其版本將所有請求傳遞給包含的輸入流。 FilterInputStream 的子類可能會進(jìn)一步覆蓋其中一些方法,并且還可能提供額外的方法和字段。

Since:

JDK1.0

字段摘要

修飾符和類型 字段 描述
protected InputStream in 要過濾的輸入流。

構(gòu)造函數(shù)摘要

修飾符 構(gòu)造函數(shù) 描述
protected FilterInputStream(InputStream in) 通過將參數(shù) in 分配給字段 this.in 來創(chuàng)建一個 FilterInputStream,以便記住它以供以后使用。

方法總結(jié)

修飾符和類型 方法 描述
int available() 返回可以從此輸入流中讀取(或跳過)的字節(jié)數(shù)的估計值,而不會被此輸入流的方法的下一個調(diào)用者阻塞。
void close() 關(guān)閉此輸入流并釋放與該流關(guān)聯(lián)的所有系統(tǒng)資源。
void mark(int readlimit) 標(biāo)記此輸入流中的當(dāng)前位置。
boolean markSupported() 測試此輸入流是否支持 mark 和 reset 方法。
int read() 從此輸入流中讀取數(shù)據(jù)的下一個字節(jié)。
int read(byte[] b) 從此輸入流中讀取最多 byte.length 個字節(jié)的數(shù)據(jù)到一個字節(jié)數(shù)組中。
int read(byte[] b, int off, int len) 從此輸入流中讀取最多 len 個字節(jié)的數(shù)據(jù)到一個字節(jié)數(shù)組中。
void reset() 將此流重新定位到最后一次在此輸入流上調(diào)用標(biāo)記方法時的位置。
long skip(long n) 跳過并丟棄輸入流中的 n 字節(jié)數(shù)據(jù)。
從類 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

字段詳細(xì)信息

in

protected volatile InputStream in

要過濾的輸入流。

構(gòu)造函數(shù)詳細(xì)信息

FilterInputStream

protected FilterInputStream(InputStream in)

通過將參數(shù) in 分配給字段 this.in 來創(chuàng)建一個 FilterInputStream,以便記住它以供以后使用。

參數(shù):

參數(shù)名稱 參數(shù)描述
in 基礎(chǔ)輸入流,如果要在沒有基礎(chǔ)流的情況下創(chuàng)建此實例,則為 null。

方法詳情

read

public int read() throws IOException

從此輸入流中讀取數(shù)據(jù)的下一個字節(jié)。 值字節(jié)作為 int 返回,范圍為 0 到 255。如果由于到達(dá)流的末尾而沒有可用的字節(jié),則返回值 -1。 此方法會一直阻塞,直到輸入數(shù)據(jù)可用、檢測到流結(jié)束或引發(fā)異常。

這個方法簡單地執(zhí)行 in.read() 并返回結(jié)果。

指定者:

讀入類 InputStream

返回:

數(shù)據(jù)的下一個字節(jié),如果到達(dá)流的末尾,則為 -1。

Throws:

Throw名稱 Throw描述
IOException 如果發(fā)生 I/O 錯誤。

read

public int read(byte[] b) throws IOException

從此輸入流中讀取最多 byte.length 個字節(jié)的數(shù)據(jù)到一個字節(jié)數(shù)組中。 此方法會阻塞,直到某些輸入可用。

該方法只執(zhí)行調(diào)用 read(b, 0, b.length) 并返回結(jié)果。 重要的是它不改為 in.read(b) ; FilterInputStream 的某些子類取決于實際使用的實現(xiàn)策略。

覆蓋:

讀入類 InputStream

參數(shù):

參數(shù)名稱 參數(shù)描述
b 讀取數(shù)據(jù)的緩沖區(qū)。

返回:

讀入緩沖區(qū)的總字節(jié)數(shù),如果由于到達(dá)流的末尾而沒有更多數(shù)據(jù),則為 -1。

Throws:

Throw名稱 Throw描述
IOException 如果發(fā)生 I/O 錯誤。

read

public int read(byte[] b, int off, int len) throws IOException

從此輸入流中讀取最多 len 個字節(jié)的數(shù)據(jù)到一個字節(jié)數(shù)組中。 如果 len 不為零,則該方法會阻塞,直到某些輸入可用; 否則,不讀取任何字節(jié)并返回 0。

該方法簡單地執(zhí)行 in.read(b, off, len) 并返回結(jié)果。

覆蓋:

讀入類 InputStream

參數(shù):

參數(shù)名稱 參數(shù)描述
b 讀取數(shù)據(jù)的緩沖區(qū)。
off 目標(biāo)數(shù)組 b 中的起始偏移量
len 讀取的最大字節(jié)數(shù)。

返回:

讀入緩沖區(qū)的總字節(jié)數(shù),如果由于到達(dá)流的末尾而沒有更多數(shù)據(jù),則為 -1。

Throws:

Throw名稱 Throw描述
NullPointerException 如果 b 為空。
IndexOutOfBoundsException 如果 off 為負(fù)數(shù),len 為負(fù)數(shù),或者 len 大于 b.length - off
IOException 如果發(fā)生 I/O 錯誤。

skip

public long skip(long n) throws IOException

跳過并丟棄輸入流中的 n 字節(jié)數(shù)據(jù)。 由于各種原因,skip 方法最終可能會跳過一些較小的字節(jié)數(shù),可能為 0。返回實際跳過的字節(jié)數(shù)。

這個方法簡單地執(zhí)行 in.skip(n)。

覆蓋:

在 InputStream 類中跳過

參數(shù):

參數(shù)名稱 參數(shù)描述
n 要跳過的字節(jié)數(shù)。

返回:

跳過的實際字節(jié)數(shù)。

Throws:

Throw名稱 Throw描述
IOException 如果流不支持查找,或者發(fā)生其他一些 I/O 錯誤。

available

public int available() throws IOException

返回可以從此輸入流中讀取(或跳過)的字節(jié)數(shù)的估計值,而不會被此輸入流的方法的下一個調(diào)用者阻塞。 下一個調(diào)用者可能是同一個線程或另一個線程。 單次讀取或跳過這么多字節(jié)不會阻塞,但可能會讀取或跳過更少的字節(jié)。

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

覆蓋:

在類 InputStream 中可用

返回:

估計可以從該輸入流中讀取(或跳過)而不阻塞的字節(jié)數(shù)。

Throws:

Throw名稱 Throw描述
IOException 如果發(fā)生 I/O 錯誤。

close

public void close() throws IOException

關(guān)閉此輸入流并釋放與該流關(guān)聯(lián)的所有系統(tǒng)資源。 這個方法只是簡單地執(zhí)行 in.close()。

指定者:

在接口 AutoCloseable 中關(guān)閉

指定者:

在接口Closeable中關(guān)閉

覆蓋:

在類 InputStream 中關(guān)閉

Throws:

Throw名稱 Throw描述
IOException 如果發(fā)生 I/O 錯誤。

mark

public void mark(int readlimit)

標(biāo)記此輸入流中的當(dāng)前位置。 對 reset 方法的后續(xù)調(diào)用將此流重新定位到最后標(biāo)記的位置,以便后續(xù)讀取重新讀取相同的字節(jié)。

readlimit 參數(shù)告訴此輸入流允許在標(biāo)記位置無效之前讀取那么多字節(jié)。

這個方法簡單地執(zhí)行 in.mark(readlimit)。

覆蓋:

在 InputStream 類中標(biāo)記

參數(shù):

參數(shù)名稱 參數(shù)描述
readlimit 在標(biāo)記位置無效之前可以讀取的最大字節(jié)數(shù)。

reset

public void reset() throws IOException

將此流重新定位到最后一次在此輸入流上調(diào)用標(biāo)記方法時的位置。

這個方法只是簡單地執(zhí)行 in.reset()。

流標(biāo)記旨在用于需要提前閱讀以查看流中內(nèi)容的情況。 通常這最容易通過調(diào)用一些通用解析器來完成。 如果流是由解析處理的類型,它就會愉快地前進(jìn)。 如果流不是那種類型,解析器應(yīng)該在失敗時拋出一個異常。 如果這發(fā)生在 readlimit 字節(jié)內(nèi),它允許外部代碼重置流并嘗試另一個解析器。

覆蓋:

在類 InputStream 中重置

Throws:

Throw名稱 Throw描述
IOException 如果流尚未被標(biāo)記或標(biāo)記已失效。

markSupported

public boolean markSupported()

測試此輸入流是否支持 mark 和 reset 方法。 這個方法只是簡單地執(zhí)行 in.markSupported()。

覆蓋:

類 InputStream 中的 markSupported

返回:

如果此流類型支持標(biāo)記和重置方法,則為 true; 否則為 false。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號