W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
java.lang.Object
|---java.io.InputStream
|---|---java.io.FilterInputStream
|---|---|---java.io.PushbackInputStream
public class PushbackInputStream
extends FilterInputStream
PushbackInputStream 將功能添加到另一個(gè)輸入流,即“推回”或“未讀”一個(gè)字節(jié)的能力。 這在代碼片段可以方便地讀取由特定字節(jié)值分隔的不確定數(shù)量的數(shù)據(jù)字節(jié)的情況下很有用; 讀取終止字節(jié)后,代碼片段可以“取消讀取”它,以便對(duì)輸入流的下一次讀取操作將重新讀取被推回的字節(jié)。 例如,表示構(gòu)成標(biāo)識(shí)符的字符的字節(jié)可能會(huì)以表示運(yùn)算符字符的字節(jié)結(jié)尾; 一個(gè)只讀取標(biāo)識(shí)符的方法可以讀取,直到它看到運(yùn)算符,然后將運(yùn)算符推回以重新讀取。
Since:
JDK1.0
修飾符和類型 | 字段 | 描述 |
---|---|---|
protected byte[] | buf | 推回緩沖區(qū)。 |
protected int | pos | 將讀取下一個(gè)字節(jié)的回推緩沖區(qū)中的位置。 |
從類 java.io.FilterInputStream 繼承的字段 |
---|
in |
構(gòu)造函數(shù) | 描述 |
---|---|
PushbackInputStream(InputStream in) | 創(chuàng)建一個(gè) PushbackInputStream 并保存其參數(shù),即輸入流,以供以后使用。 |
PushbackInputStream(InputStream in, int size) | 創(chuàng)建具有指定大小的推回緩沖區(qū)的 PushbackInputStream,并保存其參數(shù),即輸入流,以供以后使用。 |
修飾符和類型 | 方法 | 描述 |
---|---|---|
int | available() | 返回可以從此輸入流中讀?。ɑ蛱^)的字節(jié)數(shù)的估計(jì)值,而不會(huì)被下一次調(diào)用此輸入流的方法阻塞。 |
void | close() | 關(guān)閉此輸入流并釋放與該流關(guān)聯(lián)的所有系統(tǒng)資源。 |
void | mark(int readlimit) | 標(biāo)記此輸入流中的當(dāng)前位置。 |
boolean | markSupported() | 測(cè)試此輸入流是否支持 mark 和 reset 方法,但它不支持。 |
int | read() | 從此輸入流中讀取數(shù)據(jù)的下一個(gè)字節(jié)。 |
int | read(byte[] b, int off, int len) | 從此輸入流中讀取最多 len 個(gè)字節(jié)的數(shù)據(jù)到一個(gè)字節(jié)數(shù)組中。 |
void | reset() | 將此流重新定位到最后一次在此輸入流上調(diào)用標(biāo)記方法時(shí)的位置。 |
long | skip(long n) | 跳過并丟棄此輸入流中的 n 字節(jié)數(shù)據(jù)。 |
void | unread(byte[] b) | 通過將字節(jié)數(shù)組復(fù)制到推回緩沖區(qū)的前面來推回它。 |
void | unread(byte[] b, int off, int len) | 通過將字節(jié)數(shù)組的一部分復(fù)制到推回緩沖區(qū)的前面來推回它。 |
void | unread(int b) | 通過將字節(jié)復(fù)制到推回緩沖區(qū)的前面來推回一個(gè)字節(jié)。 |
從類 java.io.FilterInputStream 繼承的方法 |
---|
read |
從類 java.lang.Object 繼承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
protected byte[] buf
推回緩沖區(qū)。
Since:
JDK1.1
protected int pos
將讀取下一個(gè)字節(jié)的回推緩沖區(qū)中的位置。 當(dāng)緩沖區(qū)為空時(shí),pos等于buf.length; 當(dāng)緩沖區(qū)已滿時(shí),pos 等于 0。
Since:
JDK1.1
public PushbackInputStream(InputStream in, int size)
創(chuàng)建具有指定大小的推回緩沖區(qū)的 PushbackInputStream,并保存其參數(shù),即輸入流,以供以后使用。 最初,沒有回推字節(jié)(字段 pushBack 初始化為 -1)。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
in | 將從中讀取字節(jié)的輸入流。 |
size | 推回緩沖區(qū)的大小。 |
Throws:
Throw名稱 | Throw描述 |
---|---|
IllegalArgumentException | 如果 size <= 0 |
Since:
JDK1.1
public PushbackInputStream(InputStream in)
創(chuàng)建一個(gè) PushbackInputStream 并保存其參數(shù),即輸入流,以供以后使用。 最初,沒有回推字節(jié)(字段 pushBack 初始化為 -1)。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
in | 將從中讀取字節(jié)的輸入流。 |
public int read() throws IOException
從此輸入流中讀取數(shù)據(jù)的下一個(gè)字節(jié)。 值字節(jié)作為 int 返回,范圍為 0 到 255。如果由于到達(dá)流的末尾而沒有可用的字節(jié),則返回值 -1。 此方法會(huì)一直阻塞,直到輸入數(shù)據(jù)可用、檢測(cè)到流結(jié)束或引發(fā)異常。
此方法返回最近推回的字節(jié)(如果有),否則調(diào)用其底層輸入流的 read 方法并返回該方法返回的任何值。
覆蓋:
讀入類 FilterInputStream
返回:
數(shù)據(jù)的下一個(gè)字節(jié),如果已到達(dá)流的末尾,則為 -1。
Throws:
Throw名稱 | Throw描述 |
---|---|
IOException | 如果此輸入流已通過調(diào)用其 close() 方法關(guān)閉,或者發(fā)生 I/O 錯(cuò)誤。 |
public int read(byte[] b, int off, int len) throws IOException
從此輸入流中讀取最多 len 個(gè)字節(jié)的數(shù)據(jù)到一個(gè)字節(jié)數(shù)組中。 此方法首先讀取任何推回的字節(jié); 之后,如果讀取的字節(jié)數(shù)少于 len,則從底層輸入流中讀取。 如果 len 不為零,則該方法會(huì)阻塞,直到至少有 1 個(gè)字節(jié)的輸入可用; 否則,不讀取任何字節(jié)并返回 0。
覆蓋:
讀入類 FilterInputStream
參數(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 | 如果此輸入流已通過調(diào)用其 close() 方法關(guān)閉,或者發(fā)生 I/O 錯(cuò)誤。 |
public void unread(int b) throws IOException
通過將字節(jié)復(fù)制到推回緩沖區(qū)的前面來推回一個(gè)字節(jié)。 此方法返回后,下一個(gè)要讀取的字節(jié)將具有值 (byte)b。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
b | 低位字節(jié)要被推回的 int 值。 |
Throws:
Throw名稱 | Throw描述 |
---|---|
IOException | 如果回推緩沖區(qū)中沒有足夠的空間用于字節(jié),或者此輸入流已通過調(diào)用其 close() 方法關(guān)閉。 |
public void unread(byte[] b, int off, int len) throws IOException
通過將字節(jié)數(shù)組的一部分復(fù)制到推回緩沖區(qū)的前面來推回它。 此方法返回后,要讀取的下一個(gè)字節(jié)將具有值 b[off],之后的字節(jié)將具有值 b[off+1],依此類推。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
b | 要推回的字節(jié)數(shù)組。 |
off | 數(shù)據(jù)的起始偏移量。 |
len | 要推回的字節(jié)數(shù)。 |
Throws:
Throw名稱 | Throw描述 |
---|---|
IOException | 如果推回緩沖區(qū)中沒有足夠空間容納指定的字節(jié)數(shù),或者此輸入流已通過調(diào)用其 close() 方法關(guān)閉。 |
Since:
JDK1.1
public void unread(byte[] b) throws IOException
通過將字節(jié)數(shù)組復(fù)制到推回緩沖區(qū)的前面來推回它。 此方法返回后,要讀取的下一個(gè)字節(jié)將具有值 b[0],之后的字節(jié)將具有值 b[1],依此類推。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
b | 要推回的字節(jié)數(shù)組 |
Throws:
Throw名稱 | Throw描述 |
---|---|
IOException | 如果推回緩沖區(qū)中沒有足夠空間容納指定的字節(jié)數(shù),或者此輸入流已通過調(diào)用其 close() 方法關(guān)閉。 |
Since:
JDK1.1
public int available() throws IOException
返回可以從此輸入流中讀?。ɑ蛱^)的字節(jié)數(shù)的估計(jì)值,而不會(huì)被下一次調(diào)用此輸入流的方法阻塞。 下一次調(diào)用可能是同一個(gè)線程或另一個(gè)線程。 單次讀取或跳過這么多字節(jié)不會(huì)阻塞,但可能會(huì)讀取或跳過更少的字節(jié)。
該方法返回已被推回的字節(jié)數(shù)和available返回的值之和。
覆蓋:
在類 FilterInputStream 中可用
返回:
可以從輸入流中讀?。ɑ蛱^)而不阻塞的字節(jié)數(shù)。
Throws:
Throw名稱 | Throw描述 |
---|---|
IOException | 如果此輸入流已通過調(diào)用其 close() 方法關(guān)閉,或者發(fā)生 I/O 錯(cuò)誤。 |
public long skip(long n) throws IOException
跳過并丟棄此輸入流中的 n 字節(jié)數(shù)據(jù)。 由于各種原因,skip 方法最終可能會(huì)跳過一些較小的字節(jié)數(shù),可能為零。 如果 n 為負(fù)數(shù),則不跳過任何字節(jié)。
PushbackInputStream 的 skip 方法首先跳過 pushback 緩沖區(qū)中的字節(jié)(如果有)。 然后,如果需要跳過更多字節(jié),它會(huì)調(diào)用底層輸入流的 skip 方法。 返回實(shí)際跳過的字節(jié)數(shù)。
覆蓋:
跳過類 FilterInputStream
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
n | 要跳過的字節(jié)數(shù)。 |
返回:
跳過的實(shí)際字節(jié)數(shù)。
Throws:
Throw名稱 | Throw描述 |
---|---|
IOException | 如果流不支持查找,或者流已通過調(diào)用其 close() 方法關(guān)閉,或者發(fā)生 I/O 錯(cuò)誤。 |
Since:
1.2
public boolean markSupported()
測(cè)試此輸入流是否支持 mark 和 reset 方法,但它不支持。
覆蓋:
類 FilterInputStream 中的 markSupported
返回:
false,因?yàn)榇祟惒恢С?mark 和 reset 方法。
public void mark(int readlimit)
標(biāo)記此輸入流中的當(dāng)前位置。
PushbackInputStream 的 mark 方法什么都不做。
覆蓋:
在類 FilterInputStream 中標(biāo)記
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
readlimit | 在標(biāo)記位置無效之前可以讀取的最大字節(jié)數(shù)。 |
public void reset() throws IOException
將此流重新定位到最后一次在此輸入流上調(diào)用標(biāo)記方法時(shí)的位置。
PushbackInputStream 類的方法 reset 除了拋出一個(gè) IOException 之外什么都不做。
覆蓋:
在類 FilterInputStream 中重置
Throws:
Throw名稱 | Throw描述 |
---|---|
IOException | 如果調(diào)用此方法。 |
public void close() throws IOException
關(guān)閉此輸入流并釋放與該流關(guān)聯(lián)的所有系統(tǒng)資源。 關(guān)閉流后,進(jìn)一步的 read()、unread()、available()、reset() 或 skip() 調(diào)用將引發(fā) IOException。 關(guān)閉以前關(guān)閉的流沒有效果。
指定者:
在接口 AutoCloseable 中關(guān)閉
指定者:
在接口Closeable中關(guān)閉
覆蓋:
在類 FilterInputStream 中關(guān)閉
Throws:
Throw名稱 | Throw描述 |
---|---|
IOException | 如果發(fā)生 I/O 錯(cuò)誤。 |
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: