java.io java
類 BufferedInputStream數組
java.lang.Object測試
┗java.io.InputStream線程
┗java.io.FilterInputStream繼承
┗java.io.BufferedInputStream索引
全部已實現的接口: 接口
Closeableip
public class BufferedInputStream extends FilterInputStream資源
BufferedInputStream 爲另外一個輸入流添加一些功能,即緩衝輸入以及支持 mark 和 reset 方法的能力。在建立 BufferedInputStream 時,會建立一個內部緩衝區數組。在讀取或跳過流中的字節時,可根據須要從包含的輸入流再次填充該內部緩衝區,一次填充多個字節。mark 操做記錄輸入流中的某個點,reset 操做使得在從包含的輸入流中獲取新字節以前,再次讀取自最後一次 mark 操做後讀取的全部字節。get
字段摘要
protected byte[] buf
存儲數據的內部緩衝區數組。
protected int count
比緩衝區中最後一個有效字節的索引大 1 的索引。
protected int marklimit
調用 mark 方法後,在後續調用 reset 方法失敗以前所容許的最大提早讀取量。
protected int markpos
最後一次調用 mark 方法時 pos 字段的值。
protected int pos
緩衝區中的當前位置。
從類 java.io.FilterInputStream 繼承的字段
in
構造方法摘要
BufferedInputStream(InputStream in)
建立一個 BufferedInputStream 並保存其參數,即輸入流 in,以便未來使用。
BufferedInputStream(InputStream in, int size)
建立具備指定緩衝區大小的 BufferedInputStream 並保存其參數,即輸入流 in,以便未來使用。
方法摘要
int available()
返回能夠今後輸入流讀取(或跳過)、且不受此輸入流接下來的方法調用阻塞的估計字節數。
void close()
關閉此輸入流並釋放與該流關聯的全部系統資源。
void mark(int readlimit)
參見 InputStream 的 mark 方法的常規協定。
boolean markSupported()
測試此輸入流是否支持 mark 和 reset 方法。
int read()
參見 InputStream 的 read 方法的常規協定。
int read(byte[] b, int off, int len)
今後字節輸入流中給定偏移量處開始將各字節讀取到指定的 byte 數組中。
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
字段詳細信息
buf
protected volatile byte[] buf存儲數據的內部緩衝區數組。必要時可用另外一個不一樣大小的數組替換它。
count
protected int count比緩衝區中最後一個有效字節的索引大 1 的索引。此值始終處於 0 到 buf.length 的範圍內;從 buf[0] 到 buf[count-1] 的元素包含從底層輸入流中獲取的緩衝輸入數據。
pos
protected int pos緩衝區中的當前位置。這是將從 buf 數組中讀取的下一個字符的索引。
此值始終處於 0 到 count 的範圍內。若是此值小於 count,則 buf[pos] 將做爲下一個輸入字節;若是此值等於 count,則下一次 read 或 skip 操做須要從包含的輸入流中讀取更多的字節。
markpos
protected int markpos最後一次調用 mark 方法時 pos 字段的值。
此值始終處於 -1 到 pos 的範圍內。若是輸入流中沒有被標記的位置,則此字段爲 -1。若是輸入流中有被標記的位置,則 buf[markpos] 將用做 reset 操做後的第一個輸入字節。若是 markpos 不是 -1,則從位置 buf[markpos] 到 buf[pos-1] 之間的全部字節都必須保留在緩衝區數組中(儘管對 count、pos 和 markpos 的值進行適當調整後,這些字節可能移動到緩衝區數組中的其餘位置);除非 pos 與 markpos 的差超過 marklimit,不然不能將其丟棄。
marklimit
protected int marklimit調用 mark 方法後,在後續調用 reset 方法失敗以前所容許的最大提早讀取量。只要 pos 與 markpos 之差超過 marklimit,就能夠經過將 markpos 設置爲 -1 來刪除該標記。
構造方法詳細信息
BufferedInputStream
public BufferedInputStream(InputStream in)
建立一個 BufferedInputStream 並保存其參數,即輸入流 in,以便未來使用。建立一個內部緩衝區數組並將其存儲在 buf 中。
參數:
in - 底層輸入流。
BufferedInputStream
public BufferedInputStream(InputStream in, int size)
建立具備指定緩衝區大小的 BufferedInputStream 並保存其參數,即輸入流 in,以便未來使用。建立一個長度爲 size 的內部緩衝區數組並將其存儲在 buf 中。
參數:
in - 底層輸入流。
size - 緩衝區大小。
拋出:
IllegalArgumentException - 若是 size <= 0
方法詳細信息
read
public int read()throws IOException
參見 InputStream 的 read 方法的常規協定。
覆蓋:
類 FilterInputStream 中的 read
返回:
下一個數據字節,若是到達流末尾,則返回 -1。
拋出:
IOException - 若是已經調用其 close() 方法關閉了此輸入流,或者發生 I/O 錯誤。
read
public int read(byte[] b, int off, int len) throws IOException
今後字節輸入流中給定偏移量處開始將各字節讀取到指定的 byte 數組中。
此方法實現了 InputStream 類相應 read 方法的常規協定。另外一個便捷之處在於,它將經過重複地調用底層流的 read 方法,嘗試讀取儘量多的字節。這種迭代的 read 會一直繼續下去,直到知足如下條件之一:
已經讀取了指定的字節數,
底層流的 read 方法返回 -1,指示文件末尾(end-of-file),或者
底層流的 available 方法返回 0,指示將阻塞後續的輸入請求。
若是第一次對底層流調用 read 返回 -1(指示文件末尾),則此方法返回 -1。不然此方法返回實際讀取的字節數。
鼓勵(但不是必須)此類的各個子類以相同的方式嘗試讀取儘量多的字節。
覆蓋:
類 FilterInputStream 中的 read
參數:
b - 目標緩衝區。
off - 開始存儲字節處的偏移量。
len - 要讀取的最大字節數。
返回:
讀取的字節數;若是已到達流末尾,則返回 -1。
拋出:
IOException - 若是已經調用其 close() 方法關閉了此輸入流,或者發生 I/O 錯誤。
skip
public long skip(long n) throws IOException
參見 InputStream 的 skip 方法的常規協定。
覆蓋:
類 FilterInputStream 中的 skip
參數:
n - 要跳過的字節數。
返回:
跳過的實際字節數。
拋出:
IOException - 若是流不支持查找操做;或者已經調用其 close() 方法關閉了此輸入流;或者發生 I/O 錯誤。
available
public int available() throws IOException
返回能夠今後輸入流讀取(或跳過)、且不受此輸入流接下來的方法調用阻塞的估計字節數。接下來的調用多是同一個線程,也多是不一樣的線程。一次讀取或跳過這麼多字節將不會受阻塞,但能夠讀取或跳過數量更少的字節。
此方法返回緩衝區中剩餘的待讀取字節數 (count - pos) 與調用 in.available() 的結果之和。
覆蓋:
類 FilterInputStream 中的 available
返回:
能夠不受阻塞地今後輸入流讀取(或跳過)的估計字節數。
拋出:
IOException - 若是已經調用其 close() 方法關閉了此輸入流,或者發生 I/O 錯誤。
mark
public void mark(int readlimit)
參見 InputStream 的 mark 方法的常規協定。
覆蓋:
類 FilterInputStream 中的 mark
參數:
readlimit - 在標記位置變爲無效以前能夠讀取字節的最大限制。
reset
public void reset() throws IOException
參見 InputStream 的 reset 方法的常規協定。
若是 markpos 爲 -1(還沒有設置標記,或者標記已失效),則拋出 IOException。不然將 pos 設置爲與 markpos 相等。
覆蓋:
類 FilterInputStream 中的 reset
拋出:
IOException - 若是還沒有標記此流;或者標記已失效;或者已經調用其 close() 方法關閉了此輸入流;或者發生 I/O 錯誤。
markSupported
public boolean markSupported()
測試此輸入流是否支持 mark 和 reset 方法。BufferedInputStream 的 markSupported 方法返回 true。
覆蓋:
類 FilterInputStream 中的 markSupported
返回:
一個 boolean 值,指示此流類型是否支持 mark 和 reset 方法。
close
public void close() throws IOException
關閉此輸入流並釋放與該流關聯的全部系統資源。關閉了該流以後,後續的 read()、available()、reset() 或 skip() 調用都將拋出 IOException。關閉以前已關閉的流不會產生任何效果。
指定者:
接口 Closeable 中的 close
覆蓋:
類 FilterInputStream 中的 close
拋出:
IOException - 若是發生 I/O 錯誤。