W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
java.lang.Object
|---java.io.InputStream
|---|---java.io.ByteArrayInputStream
public class ByteArrayInputStream
extends InputStream
ByteArrayInputStream 包含一個內(nèi)部緩沖區(qū),其中包含可以從流中讀取的字節(jié)。 內(nèi)部計數(shù)器跟蹤讀取方法提供的下一個字節(jié)。
關閉 ByteArrayInputStream 無效。 可以在流關閉后調(diào)用此類中的方法,而不會生成 IOException。
Since:
JDK1.0
修飾符和類型 | 字段 | 描述 |
---|---|---|
protected byte[] | buf | 由流的創(chuàng)建者提供的字節(jié)數(shù)組。 |
protected int | count | 比輸入流緩沖區(qū)中最后一個有效字符大一的索引。 |
protected int | mark | 流中當前標記的位置。 |
protected int | pos | 要從輸入流緩沖區(qū)讀取的下一個字符的索引。 |
構(gòu)造函數(shù) | 描述 |
---|---|
ByteArrayInputStream(byte[] buf) | 創(chuàng)建一個ByteArrayInputStream,使其使用buf作為其緩沖區(qū)陣列。 |
ByteArrayInputStream(byte[] buf, int offset, int length) | 創(chuàng)建ByteArrayInputStream,使用buf作為其緩沖區(qū)陣列。 |
修飾符和類型 | 方法 | 描述 |
---|---|---|
int | available() | 返回可以從該輸入流中讀?。ɑ蛱^)的剩余字節(jié)數(shù)。 |
void | close() | 關閉一個ByteArrayInputStream沒有任何效果。 |
void | mark(int readAheadLimit) | 設置流中的當前標記位置。 |
boolean | markSupported() | 測試這個InputStream是否支持mark/reset。 |
int | read() | 從這個輸入流中讀取下一個字節(jié)的數(shù)據(jù)。 |
int | read(byte[] b, int off, int len) | 從這個輸入流中讀取最多為len字節(jié)的數(shù)據(jù)到一個字節(jié)數(shù)組。 |
void | reset() | 將緩沖區(qū)重置到標記位置。 |
long | skip(long n) | 從這個輸入流中跳過n個字節(jié)的輸入。 |
從java.io.InputStream類繼承的方法 |
---|
read |
從java.lang.Object類繼承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
protected byte[] buf
一個由流的創(chuàng)建者提供的字節(jié)數(shù)組。buf[0]到buf[count-1]元素是唯一可以從流中讀取的字節(jié);buf[pos]元素是下一個要讀取的字節(jié)。
protected int count
比輸入流緩沖區(qū)中最后一個有效字符大一的索引。這個值應該總是非負的,并且不大于buf的長度。它比可以從輸入流緩沖區(qū)讀取的buf中最后一個字節(jié)的位置大一。
protected int mark
當前在流中標記的位置。ByteArrayInputStream對象在構(gòu)造時默認標記在零位置。它們可以通過mark()方法標記在緩沖區(qū)的另一個位置。當前的緩沖區(qū)位置被reset()方法設置為這個點。
如果沒有設置標記,那么標記的值就是傳遞給構(gòu)造函數(shù)的偏移量(如果沒有提供偏移量,則為0)。
Since:
JDK1.1
protected int pos
從輸入流緩沖區(qū)讀取下一個字符的索引。這個值應該總是非負的,并且不大于count的值。要從輸入流緩沖區(qū)讀取的下一個字節(jié)將是buf[pos]。
public ByteArrayInputStream(byte[] buf)
創(chuàng)建一個ByteArrayInputStream,使其使用buf作為其緩沖區(qū)陣列。緩沖區(qū)數(shù)組不會被復制。pos的初始值是0,count的初始值是buf的長度。
參數(shù)。
參數(shù)名稱 | 參數(shù)描述 |
---|---|
buf | 輸入緩沖區(qū)。 |
public ByteArrayInputStream(byte[] buf, int offset, int length)
創(chuàng)建ByteArrayInputStream,使用buf作為其緩沖陣列。pos的初始值是offset,count的初始值是offset+length和buf.length的最小值。緩沖區(qū)數(shù)組不被復制。緩沖區(qū)的標記被設置為指定的偏移量。
參數(shù)。
參數(shù)名稱 | 參數(shù)描述 |
---|---|
buf | 輸入緩沖區(qū)。 |
offset | 要讀取的第一個字節(jié)在緩沖區(qū)的偏移量。 |
length | 從緩沖區(qū)讀取的最大字節(jié)數(shù)。 |
public int read()
從這個輸入流中讀取下一個字節(jié)的數(shù)據(jù)。字節(jié)值以0-255范圍內(nèi)的一個int形式返回。如果因為已經(jīng)到達流的末端而沒有可用的字節(jié),將返回值-1。
這個讀取方法不能阻塞。
指定的對象:
read in class InputStream
返回:
下一個字節(jié)的數(shù)據(jù),或者如果已經(jīng)到達了流的末端,則返回-1。
public int read(byte[] b, int off, int len)
從這個輸入流中讀取最多為len字節(jié)的數(shù)據(jù)到一個字節(jié)數(shù)組。如果pos等于count,則返回-1,表示文件結(jié)束。否則,讀取的字節(jié)數(shù)k等于len和count-pos中較小的那個。如果k是正數(shù),那么buf[pos]到buf[pos+k-1]的字節(jié)將以System.arraycopy的方式被復制到b[off]到b[off+k-1]。數(shù)值k被添加到pos中,k被返回。
這個讀取方法不能阻塞。
重寫。
read 在類InputStream中
參數(shù)。
參數(shù)名稱 | 參數(shù)描述 |
---|---|
b | 讀取數(shù)據(jù)的緩沖區(qū)。 |
off | 目的數(shù)組中的起始偏移量 b |
len | 讀取的最大字節(jié)數(shù)。 |
返回:
讀入緩沖區(qū)的總字節(jié)數(shù),如果沒有更多的數(shù)據(jù),因為已經(jīng)達到了流的終點,則返回-1。
Throws:
Throw名稱 | Throw描述 |
---|---|
NullPointerException | 如果b為空。 |
IndexOutOfBoundsException | 如果off為負數(shù),len為負數(shù),或者len大于b.length - off |
public long skip(long n)
從這個輸入流中跳過n個字節(jié)的輸入。如果到了輸入流的末端,可能會跳過更少的字節(jié)。被跳過的實際字節(jié)數(shù)k等于n和count-pos中的較小值。k的值被加到pos中,k被返回。
覆蓋。
skip in class InputStream
參數(shù)。
參數(shù)名稱 | 參數(shù)描述 |
---|---|
n | 要跳過的字節(jié)數(shù)。 |
返回:
實際跳過的字節(jié)數(shù)。
public int available()
返回可以從該輸入流中讀?。ɑ蛱^)的剩余字節(jié)數(shù)。
返回的值是count - pos,即從輸入緩沖區(qū)讀出的剩余字節(jié)數(shù)。
重寫:
在類InputStream中可用
返回:
可以從這個輸入流中讀?。ɑ蛱^)的剩余字節(jié)數(shù),不存在阻塞問題。
public boolean markSupported()
測試這個InputStream是否支持mark/reset。ByteArrayInputStream的markSupported方法總是返回true。
重寫:
markSupported in class InputStream
返回:
true 如果這個流實例支持mark和reset方法;否則false。
Since:
JDK1.1
public void mark(int readAheadLimit)
設置流中的當前標記位置。ByteArrayInputStream對象在構(gòu)造時默認被標記在0的位置。他們可以通過這個方法在緩沖區(qū)內(nèi)的其他位置進行標記。
如果沒有設置標記,那么標記的值就是傳遞給構(gòu)造函數(shù)的偏移量(如果沒有提供偏移量則為0)。
注意:這個類的readAheadLimit沒有意義。
重寫:
mark in class InputStream
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
readAheadLimit | 在標記位置變得無效之前可以讀取的最大限制字節(jié)數(shù)。 |
Since:
JDK1.1
public void reset()
將緩沖區(qū)重置到標記的位置。標記的位置是0,除非標記了另一個位置或者在構(gòu)造函數(shù)中指定了一個偏移。
重述:
reset in class InputStream
public void close() throws IOException
關閉ByteArrayInputStream沒有效果。該類中的方法可以在流關閉后調(diào)用,而不會生成IOException。
規(guī)定:
關閉接口自動關閉
規(guī)定:
close in interface可關閉
覆蓋:
在類InputStream中關閉
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)系方式:
更多建議: