- 所有已实现的接口:
Closeable,AutoCloseable
ByteArrayInputStream 包含一个内部缓冲区,其中包含可以从流中读取的字节。内部计数器跟踪 read 方法提供的下一个字节。
关闭 ByteArrayInputStream 没有任何效果。可以在流关闭后调用此类中的方法而不生成 IOException 。
- 自从:
- 1.0
- 参见:
-
字段摘要
字段 -
构造方法总结
构造方法构造方法描述ByteArrayInputStream(byte[] buf) 创建一个ByteArrayInputStream,以便它使用buf作为其缓冲区数组。ByteArrayInputStream(byte[] buf, int offset, int length) 创建使用buf作为其缓冲区数组的ByteArrayInputStream。 -
方法总结
修饰符和类型方法描述int返回可以从此输入流中读取(或跳过)的剩余字节数。voidclose()关闭ByteArrayInputStream没有任何效果。voidmark(int readAheadLimit) 设置流中当前标记的位置。boolean测试此InputStream是否支持标记/重置。intread()从此输入流中读取下一个字节的数据。intread(byte[] b, int off, int len) 从此输入流中将最多len字节的数据读入字节数组。byte[]从输入流中读取所有剩余字节。intreadNBytes(byte[] b, int off, int len) 从输入流中将请求的字节数读取到给定的字节数组中。voidreset()将缓冲区重置为标记位置。longskip(long n) 跳过来自该输入流的n个字节的输入。在类 java.io.InputStream 中声明的方法
nullInputStream, read, readNBytes, skipNBytes, 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比输入流缓冲区中最后一个有效字符大 1 的索引。该值应始终为非负数且不大于buf的长度。它比buf中可以从输入流缓冲区读取的最后一个字节的位置大 1。
-
-
构造方法详细信息
-
ByteArrayInputStream
public ByteArrayInputStream(byte[] buf) 创建一个ByteArrayInputStream,以便它使用buf作为其缓冲区数组。不复制缓冲区数组。pos的初始值为0,count的初始值为buf的长度。- 参数:
buf- 输入缓冲器。
-
ByteArrayInputStream
public ByteArrayInputStream(byte[] buf, int offset, int length) 创建使用buf作为其缓冲区数组的ByteArrayInputStream。pos的初始值为offset,count的初始值为offset+length和buf.length的最小值。不复制缓冲区数组。缓冲区的标记设置为指定的偏移量。- 参数:
buf- 输入缓冲器。offset- 要读取的第一个字节在缓冲区中的偏移量。length- 从缓冲区读取的最大字节数。
-
-
方法详情
-
read
public int read()从此输入流中读取下一个字节的数据。值字节作为int在0到255范围内返回。如果因为已到达流的末尾而没有可用字节,则返回值-1。此
read方法无法阻止。- 指定者:
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。与
InputStream的overridden method不同,如果已到达流的末尾,则此方法返回-1而不是零和len == 0。此
read方法无法阻止。- 重写:
read在类InputStream中- 参数:
b- 读取数据的缓冲区。off- 写入数据的数组b中的起始偏移量。len- 要读取的最大字节数。- 返回:
-
读入缓冲区的字节总数,如果因为已到达流的末尾而没有更多数据,则为
-1。 - 抛出:
NullPointerException- 如果b是null。IndexOutOfBoundsException- 如果off为负,len为负,或者len大于b.length - off- 参见:
-
readAllBytes
public byte[] readAllBytes()从类复制的描述:InputStream从输入流中读取所有剩余字节。此方法会阻塞,直到读取完所有剩余字节并检测到流结束,或者抛出异常。此方法不会关闭输入流。当此流到达流的末尾时,进一步调用此方法将返回一个空字节数组。
请注意,此方法适用于方便将所有字节读入字节数组的简单情况。它不适用于读取具有大量数据的输入流。
输入流为异步关闭,或读取期间中断的线程,是高度特定于输入流的,因此未指定。
如果从输入流读取时发生 I/O 错误,那么它可能会在读取了一些(但不是全部)字节后这样做。因此,输入流可能不在流的末尾并且可能处于不一致状态。强烈建议在发生 I/O 错误时立即关闭流。
- 重写:
readAllBytes在类InputStream中- 返回:
- 包含从此输入流读取的字节的字节数组
-
readNBytes
public int readNBytes(byte[] b, int off, int len) 从类复制的描述:InputStream从输入流中将请求的字节数读取到给定的字节数组中。此方法会阻塞,直到读取了len字节的输入数据、检测到流结束或抛出异常。返回实际读取的字节数,可能为零。此方法不会关闭输入流。如果在读取
len字节之前到达流末尾,则将返回读取的实际字节数。当此流到达流的末尾时,此方法的进一步调用将返回零。如果
len为零,则不读取任何字节并返回0;否则,将尝试读取最多len个字节。读取的第一个字节存储到元素
b[off]中,下一个字节存储到b[off+1]中,依此类推。读取的字节数最多等于len。让k是实际读取的字节数;这些字节将存储在元素b[off]到b[off+中k-1],留下元素b[off+k]到b[off+len-1]不受影响。输入流为异步关闭,或读取期间中断的线程,是高度特定于输入流的,因此未指定。
如果从输入流读取时发生 I/O 错误,那么它可能会在
b的一些(但不是全部)字节已用输入流中的数据更新后执行此操作。因此,输入流和b可能处于不一致状态。强烈建议在发生 I/O 错误时立即关闭流。- 重写:
readNBytes在类InputStream中- 参数:
b- 读取数据的字节数组off- 写入数据的b中的起始偏移量len- 要读取的最大字节数- 返回:
- 读入缓冲区的实际字节数
-
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在类InputStream中- 实现要求:
ByteArrayInputStream的markSupported方法总是返回true。- 返回:
- true
- 自从:
- 1.1
- 参见:
-
mark
public void mark(int readAheadLimit) 设置流中当前标记的位置。 ByteArrayInputStream 对象在构造时默认标记在位置零。通过这种方法,它们可能被标记在缓冲区内的另一个位置。如果未设置标记,则标记的值是传递给构造方法的偏移量(如果未提供偏移量,则为 0)。
注意:这个类的
readAheadLimit没有意义。- 重写:
mark在类InputStream中- 参数:
readAheadLimit- 在标记位置失效之前可以读取的最大字节数。- 自从:
- 1.1
- 参见:
-
reset
public void reset()将缓冲区重置为标记位置。除非在构造方法中标记了另一个位置或指定了偏移量,否则标记的位置为 0。- 重写:
reset在类InputStream中- 参见:
-
close
关闭ByteArrayInputStream没有任何效果。可以在流关闭后调用此类中的方法而不生成IOException。- 指定者:
close在接口AutoCloseable中- 指定者:
close在接口Closeable中- 重写:
close在类InputStream中- 抛出:
IOException- 如果发生 I/O 错误。
-