- java.lang.Object
-
- java.io.InputStream
-
- java.io.ByteArrayInputStream
-
- All Implemented Interfaces:
-
Closeable
,AutoCloseable
public class ByteArrayInputStream extends InputStream
AByteArrayInputStream
包含一个内部缓冲区,其中包含可以从流中读取的字节。 内部计数器跟踪由read
方法提供的下一个字节。关闭一个
ByteArrayInputStream
没有任何效果。 该流中的方法可以在流关闭后调用,而不生成IOException
。- 从以下版本开始:
- 1.0
- 另请参见:
-
StringBufferInputStream
-
-
构造方法摘要
构造方法 Constructor 描述 ByteArrayInputStream(byte[] buf)
创建一个ByteArrayInputStream
,使其使用buf
作为其缓冲区数组。ByteArrayInputStream(byte[] buf, int offset, int length)
创建ByteArrayInputStream
使用buf
作为其缓冲器阵列。
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 int
available()
返回可从此输入流读取(或跳过)的剩余字节数。void
close()
关闭一个ByteArrayInputStream
没有任何效果。void
mark(int readAheadLimit)
设置流中当前标记的位置。boolean
markSupported()
测试这个InputStream
支持标记/复位。int
read()
从该输入流读取下一个数据字节。int
read(byte[] b, int off, int len)
从该输入流读取最多len
个字节的数据到字节数组。void
reset()
将缓冲区重置为标记位置。long
skip(long n)
跳过此输入流的n
字节输入。-
Methods inherited from class java.io.InputStream
read, readAllBytes, readNBytes, transferTo
-
-
-
-
字段详细信息
-
buf
protected byte[] buf
由数据流的创建者提供的字节数组。 元素buf[0]
至buf[count-1]
是唯一可以从流中读取的字节; 元素buf[pos]
是要读取的下一个字节。
-
pos
protected int pos
从输入流缓冲区读取的下一个字符的索引。 该值应始终为非负数,不得大于值count
。 要从输入流缓冲区读取的下一个字节将为buf[pos]
。
-
mark
protected int mark
流中当前标记的位置。 当构造时,ByteArrayInputStream对象在默认情况下标记为零。 它们可能被mark()
方法标记在缓冲区内的另一个位置。 目前的缓冲区位置由reset()
方法设置。如果没有设置标记,则标记的值是传递给构造函数的偏移量(如果没有提供偏移量,则为0)。
- 从以下版本开始:
- 1.1
-
count
protected int count
索引一大于输入流缓冲区中的最后一个有效字符。 该值应始终为非负数,不得大于buf
的长度。 它大于buf
中可以从输入流缓冲区读取的最后一个字节的位置。
-
-
构造方法详细信息
-
ByteArrayInputStream
public ByteArrayInputStream(byte[] buf)
创建一个ByteArrayInputStream
,使其使用buf
作为其缓冲区数组。 缓冲区数组不被复制。 的初始值pos
是0
和的初始值count
是长度buf
。- 参数
-
buf
- 输入缓冲区。
-
ByteArrayInputStream
public ByteArrayInputStream(byte[] buf, int offset, int length)
创建ByteArrayInputStream
使用buf
作为其缓冲器阵列。 的初始值pos
是offset
和的初始值count
是最小offset+length
和buf.length
。 缓冲区数组不被复制。 缓冲区的标记设置为指定的偏移量。- 参数
-
buf
- 输入缓冲区。 -
offset
- 要读取的第一个字节的缓冲区中的偏移量。 -
length
- 从缓冲区读取的最大字节数。
-
-
方法详细信息
-
read
public int read()
从该输入流读取下一个数据字节。 值字节以int
范围内的0
到255
。 如果没有字节可用,因为已经到达流的末尾,则返回值-1
。这个
read
方法不能阻止。- Specified by:
-
read
在InputStream
- 结果
-
数据的下一个字节,如果已经达到流的末尾,
-1
。
-
read
public int read(byte[] b, int off, int len)
从该输入流读取最多len
个字节的数据到字节数组。 如果pos
等于count
,则返回-1
以指示文件结束。 否则,读取的字节数k
等于len
和count-pos
的较小者。 如果k
为正,则buf[pos]
至buf[pos+k-1]
字节以由System.arraycopy
执行的方式复制到b[off]
至b[off+k-1]
中。 值k
被添加到pos
并返回k
。这个
read
方法不能阻止。- 重写:
-
read
在InputStream
- 参数
-
b
- 读取数据的缓冲区。 -
off
- 目标阵列b
的起始偏移量 -
len
- 读取的最大字节数。 - 结果
-
读取到缓冲区的总字节数,如果没有更多的数据,因为已经到达流的末尾,那么这个字节是
-1
。 - 异常
-
NullPointerException
- 如果b
是null
。 -
IndexOutOfBoundsException
- 如果off
为负,len
为负数,或len
为b.length - off
- 另请参见:
-
InputStream.read()
-
skip
public long skip(long n)
从此输入流跳过n
个字节的输入。 如果达到输入流的结尾,则可能会跳过更少的字节。 要跳过的字节的实数为k
等于n
和count-pos
的较小者。 值k
被添加到pos
并返回k
。- 重写:
-
skip
在InputStream
- 参数
-
n
- 要跳过的字节数。 - 结果
- 实际跳过的字节数。
-
available
public int available()
返回可从此输入流读取(或跳过)的剩余字节数。返回的值为
count - pos
,即从输入缓冲区读取的剩余字节数。- 重写:
-
available
在InputStream
- 结果
- 可以从该输入流中读取(或跳过)而不阻塞的剩余字节数。
-
markSupported
public boolean markSupported()
测试InputStream
支持标记/复位。markSupported
方法ByteArrayInputStream
总是返回true
。- 重写:
-
markSupported
InputStream
- 结果
-
true
如果这个流实例支持标记和重置方法; 否则为false
。 - 从以下版本开始:
- 1.1
- 另请参见:
-
InputStream.mark(int)
,InputStream.reset()
-
mark
public void mark(int readAheadLimit)
设置流中当前标记的位置。 当构造时,ByteArrayInputStream对象在默认情况下标记为零。 它们可以通过此方法标记在缓冲区内的另一个位置。如果没有设置标记,则标记的值是传递给构造函数的偏移量(如果没有提供偏移量,则为0)。
注意:这个类的
readAheadLimit
没有意义。- 重写:
-
mark
在InputStream
- 参数
-
readAheadLimit
- 标记位置无效之前可以读取的最大字节数限制。 - 从以下版本开始:
- 1.1
- 另请参见:
-
InputStream.reset()
-
reset
public void reset()
将缓冲区重置为标记位置。 标记位置为0,除非在构造函数中指定了另一个位置或者指定了一个偏移量。- 重写:
-
reset
在InputStream
- 另请参见:
-
InputStream.mark(int)
,IOException
-
close
public void close() throws IOException
关闭一个ByteArrayInputStream
没有任何效果。 可以在流关闭后调用此类中的方法,而不生成IOException
。- Specified by:
-
close
在接口AutoCloseable
- Specified by:
-
close
在接口Closeable
- 重写:
-
close
在InputStream
- 异常
-
IOException
- 如果发生I / O错误。
-
-