W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
java.lang.Object
|---java.io.InputStream
|---|---java.io.FilterInputStream
|---|---|---java.io.BufferedInputStream
public class BufferedInputStream
extends FilterInputStream
BufferedInputStream 向另一個輸入流添加了功能,即緩沖輸入并支持標(biāo)記和重置方法的能力。 創(chuàng)建 BufferedInputStream 時,會創(chuàng)建一個內(nèi)部緩沖區(qū)數(shù)組。 當(dāng)流中的字節(jié)被讀取或跳過時,內(nèi)部緩沖區(qū)會根據(jù)需要從包含的輸入流中重新填充,一次很多字節(jié)。 標(biāo)記操作會記住輸入流中的一個點,并且重置操作會導(dǎo)致在從包含的輸入流中獲取新字節(jié)之前重新讀取自最近一次標(biāo)記操作以來讀取的所有字節(jié)。
Since:
JDK1.0
修飾符和類型 | 字段 | 描述 |
---|---|---|
protected byte[] | buf | 存儲數(shù)據(jù)的內(nèi)部緩沖區(qū)數(shù)組。 |
protected int | count | 比緩沖區(qū)中最后一個有效字節(jié)的索引大一的索引。 |
protected int | marklimit | 在隨后調(diào)用 reset 方法失敗之前調(diào)用 mark 方法后允許的最大預(yù)讀。 |
protected int | markpos | 調(diào)用最后一個標(biāo)記方法時 pos 字段的值。 |
protected int | pos | 緩沖區(qū)中的當(dāng)前位置。 |
從類 java.io.FilterInputStream 繼承的字段 |
---|
in |
構(gòu)造函數(shù) | 描述 |
---|---|
BufferedInputStream(InputStream in) | 創(chuàng)建一個 BufferedInputStream 并保存其參數(shù),即輸入流,以供以后使用。 |
BufferedInputStream(InputStream in, int size) | 創(chuàng)建具有指定緩沖區(qū)大小的 BufferedInputStream,并保存其參數(shù),即輸入流,以供以后使用。 |
修飾符和類型 | 方法 | 描述 |
---|---|---|
int | available() | 返回可以從此輸入流中讀?。ɑ蛱^)的字節(jié)數(shù)的估計值,而不會被下一次調(diào)用此輸入流的方法阻塞。 |
void | close() | 關(guān)閉此輸入流并釋放與該流關(guān)聯(lián)的所有系統(tǒng)資源。 |
void | mark(int readlimit) | 參見 InputStream 的 mark 方法的通用約定。 |
boolean | markSupported() | 測試此輸入流是否支持 mark 和 reset 方法。 |
int | read() | 參見 InputStream 的 read 方法的通用約定。 |
int | read(byte[] b, int off, int len) | 從此字節(jié)輸入流中將字節(jié)讀取到指定的字節(jié)數(shù)組中,從給定的偏移量開始。 |
void | reset() | 參見 InputStream 的 reset 方法的通用約定。 |
long | skip(long n) | 參見 InputStream 的 skip 方法的通用約定。 |
從類 java.io.FilterInputStream 繼承的方法 |
---|
read |
從類 java.lang.Object 繼承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
protected volatile byte[] buf
存儲數(shù)據(jù)的內(nèi)部緩沖區(qū)數(shù)組。 必要時,它可以被另一個不同大小的數(shù)組替換。
protected int count
比緩沖區(qū)中最后一個有效字節(jié)的索引大一的索引。 該值始終在 0 到 buf.length 的范圍內(nèi); 元素 buf[0] 到 buf[count-1] 包含從底層輸入流獲得的緩沖輸入數(shù)據(jù)。
protected int marklimit
在隨后調(diào)用 reset 方法失敗之前調(diào)用 mark 方法后允許的最大預(yù)讀。 每當(dāng) pos 和 markpos 之間的差值超過 marklimit 時,可以通過將 markpos 設(shè)置為 -1 來刪除該標(biāo)記。
protected int markpos
調(diào)用最后一個標(biāo)記方法時 pos 字段的值。
該值始終在 -1 到 pos 的范圍內(nèi)。 如果輸入流中沒有標(biāo)記位置,則該字段為-1。 如果輸入流中有標(biāo)記位置,則 buf[markpos] 是復(fù)位操作后作為輸入提供的第一個字節(jié)。 如果 markpos 不是 -1,則從位置 buf[markpos] 到 buf[pos-1] 的所有字節(jié)都必須保留在緩沖區(qū)數(shù)組中(盡管它們可以移動到緩沖區(qū)數(shù)組中的另一個位置,并適當(dāng)調(diào)整 計數(shù)、位置和標(biāo)記位置); 除非且直到 pos 和 markpos 之間的差異超過 marklimit,否則它們可能不會被丟棄。
protected int pos
緩沖區(qū)中的當(dāng)前位置。 這是要從 buf 數(shù)組中讀取的下一個字符的索引。
該值始終在 0 到 count 的范圍內(nèi)。 如果它小于 count,則 buf[pos] 是作為輸入提供的下一個字節(jié); 如果它等于 count,那么下一次讀取或跳過操作將需要從包含的輸入流中讀取更多字節(jié)。
public BufferedInputStream(InputStream in)
創(chuàng)建一個 BufferedInputStream 并保存其參數(shù),即輸入流,以供以后使用。 創(chuàng)建一個內(nèi)部緩沖區(qū)數(shù)組并將其存儲在 buf 中。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
in | 底層輸入流。 |
public BufferedInputStream(InputStream in, int size)
創(chuàng)建具有指定緩沖區(qū)大小的 BufferedInputStream,并保存其參數(shù),即輸入流,以供以后使用。 創(chuàng)建一個長度大小的內(nèi)部緩沖區(qū)數(shù)組并將其存儲在 buf 中。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
in | 底層輸入流。 |
size | 緩沖區(qū)大小。 |
Throws:
Throw名稱 | Throw描述 |
---|---|
IllegalArgumentException | 如果 size <= 0. |
public int read() throws IOException
參見 InputStream 的 read 方法的通用約定。
覆蓋:
讀入類 FilterInputStream
返回:
數(shù)據(jù)的下一個字節(jié),如果到達(dá)流的末尾,則為 -1。
Throws:
Throw名稱 | Throw描述 |
---|---|
IOException | 如果此輸入流已通過調(diào)用其 close() 方法關(guān)閉,或者發(fā)生 I/O 錯誤。 |
public int read(byte[] b, int off, int len) throws IOException
從此字節(jié)輸入流中將字節(jié)讀取到指定的字節(jié)數(shù)組中,從給定的偏移量開始。
該方法實現(xiàn)了 InputStream 類對應(yīng)的 [InputStream#read(byte], int, int) 方法的通用約定。 作為額外的便利,它嘗試通過重復(fù)調(diào)用底層流的讀取方法來讀取盡可能多的字節(jié)。 此迭代讀取將繼續(xù),直到滿足以下條件之一:
如果對底層流的第一次讀取返回 -1 以指示文件結(jié)束,則此方法返回 -1。 否則,此方法返回實際讀取的字節(jié)數(shù)。
鼓勵但不要求此類的子類嘗試以相同方式讀取盡可能多的字節(jié)。
覆蓋:
讀入類 FilterInputStream
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
b | 目標(biāo)緩沖區(qū)。 |
off | 開始存儲字節(jié)的偏移量。 |
len | 要讀取的最大字節(jié)數(shù)。 |
返回:
讀取的字節(jié)數(shù),如果已到達(dá)流的末尾,則為 -1。
Throws:
Throw名稱 | Throw描述 |
---|---|
IOException | 如果此輸入流已通過調(diào)用其 close() 方法關(guān)閉,或者發(fā)生 I/O 錯誤。 |
public long skip(long n) throws IOException
參見 InputStream 的 skip 方法的通用約定。
覆蓋:
跳過類 FilterInputStream
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
n | 要跳過的字節(jié)數(shù)。 |
返回:
跳過的實際字節(jié)數(shù)。
Throws:
Throw名稱 | Throw描述 |
---|---|
IOException | 如果流不支持查找,或者此輸入流已通過調(diào)用其 close() 方法關(guān)閉,或者發(fā)生 I/O 錯誤。 |
public int available() throws IOException
返回可以從此輸入流中讀?。ɑ蛱^)的字節(jié)數(shù)的估計值,而不會被下一次調(diào)用此輸入流的方法阻塞。 下一次調(diào)用可能是同一個線程或另一個線程。 單次讀取或跳過這么多字節(jié)不會阻塞,但可能會讀取或跳過更少的字節(jié)。
此方法返回緩沖區(qū)中要讀取的剩余字節(jié)數(shù) (count - pos) 和調(diào)用 in.available() 的結(jié)果之和。
覆蓋:
在類 FilterInputStream 中可用
返回:
估計可以從該輸入流中讀?。ɑ蛱^)而不阻塞的字節(jié)數(shù)。
Throws:
Throw名稱 | Throw描述 |
---|---|
IOException | 如果此輸入流已通過調(diào)用其 close() 方法關(guān)閉,或者發(fā)生 I/O 錯誤。 |
public void mark(int readlimit)
參見 InputStream 的 mark 方法的通用約定。
覆蓋:
在類 FilterInputStream 中標(biāo)記
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
readlimit | 在標(biāo)記位置無效之前可以讀取的最大字節(jié)數(shù)。 |
public void reset() throws IOException
參見 InputStream 的 reset 方法的通用約定。
如果 markpos 為 -1(未設(shè)置標(biāo)記或標(biāo)記已失效),則拋出 IOException。 否則,將 pos 設(shè)置為等于 markpos。
覆蓋:
在類 FilterInputStream 中重置
Throws:
Throw名稱 | Throw描述 |
---|---|
IOException | 如果此流尚未被標(biāo)記,或者如果標(biāo)記已失效,或者流已通過調(diào)用其 close() 方法關(guān)閉,或者發(fā)生 I/O 錯誤。 |
public boolean markSupported()
測試此輸入流是否支持 mark 和 reset 方法。 BufferedInputStream 的 markSupported 方法返回 true。
覆蓋:
類 FilterInputStream 中的 markSupported
返回:
一個布爾值,指示此流類型是否支持標(biāo)記和重置方法。
public void close() throws IOException
關(guān)閉此輸入流并釋放與該流關(guān)聯(lián)的所有系統(tǒng)資源。 關(guān)閉流后,進(jìn)一步的 read()、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 錯誤。 |
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: