鴻蒙OS ByteArrayInputStream

2022-10-18 14:07 更新

ByteArrayInputStream

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ù)摘要

構(gòu)造函數(shù) 描述
ByteArrayInputStream(byte[] buf) 創(chuàng)建一個ByteArrayInputStream,使其使用buf作為其緩沖區(qū)陣列。
ByteArrayInputStream(byte[] buf, int offset, int length) 創(chuàng)建ByteArrayInputStream,使用buf作為其緩沖區(qū)陣列。

方法總結(jié)

修飾符和類型 方法 描述
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

字段詳細信息

buf

protected byte[] buf

一個由流的創(chuàng)建者提供的字節(jié)數(shù)組。buf[0]到buf[count-1]元素是唯一可以從流中讀取的字節(jié);buf[pos]元素是下一個要讀取的字節(jié)。

count

protected int count

比輸入流緩沖區(qū)中最后一個有效字符大一的索引。這個值應該總是非負的,并且不大于buf的長度。它比可以從輸入流緩沖區(qū)讀取的buf中最后一個字節(jié)的位置大一。

mark

protected int mark

當前在流中標記的位置。ByteArrayInputStream對象在構(gòu)造時默認標記在零位置。它們可以通過mark()方法標記在緩沖區(qū)的另一個位置。當前的緩沖區(qū)位置被reset()方法設置為這個點。

如果沒有設置標記,那么標記的值就是傳遞給構(gòu)造函數(shù)的偏移量(如果沒有提供偏移量,則為0)。

Since:

JDK1.1

pos

protected int pos

從輸入流緩沖區(qū)讀取下一個字符的索引。這個值應該總是非負的,并且不大于count的值。要從輸入流緩沖區(qū)讀取的下一個字節(jié)將是buf[pos]。

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

ByteArrayInputStream

public ByteArrayInputStream(byte[] buf)

創(chuàng)建一個ByteArrayInputStream,使其使用buf作為其緩沖區(qū)陣列。緩沖區(qū)數(shù)組不會被復制。pos的初始值是0,count的初始值是buf的長度。

參數(shù)。

參數(shù)名稱 參數(shù)描述
buf 輸入緩沖區(qū)。

ByteArrayInputStream

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ù)。

方法詳情

read

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。

read

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

skip

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ù)。

available

public int available()

返回可以從該輸入流中讀?。ɑ蛱^)的剩余字節(jié)數(shù)。

返回的值是count - pos,即從輸入緩沖區(qū)讀出的剩余字節(jié)數(shù)。

重寫:

在類InputStream中可用

返回:

可以從這個輸入流中讀?。ɑ蛱^)的剩余字節(jié)數(shù),不存在阻塞問題。

markSupported

public boolean markSupported()

測試這個InputStream是否支持mark/reset。ByteArrayInputStream的markSupported方法總是返回true。

重寫:

markSupported in class InputStream

返回:

true 如果這個流實例支持mark和reset方法;否則false。

Since:

JDK1.1

mark

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

reset

public void reset()

將緩沖區(qū)重置到標記的位置。標記的位置是0,除非標記了另一個位置或者在構(gòu)造函數(shù)中指定了一個偏移。

重述:

reset in class InputStream

close

public void close() throws IOException

關閉ByteArrayInputStream沒有效果。該類中的方法可以在流關閉后調(diào)用,而不會生成IOException。

規(guī)定:

關閉接口自動關閉

規(guī)定:

close in interface可關閉

覆蓋:

在類InputStream中關閉

Throws:

Throw名稱 Throw描述
IOException 如果發(fā)生I/O錯誤。
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號