模块  java.base
软件包  java.io

Class ByteArrayInputStream

  • 实现的所有接口
    CloseableAutoCloseable

    public class ByteArrayInputStream
    extends InputStream
    A ByteArrayInputStream包含一个内部缓冲区,其中包含可从流中读取的字节。 内部计数器跟踪read方法提供的下一个字节。

    关闭ByteArrayInputStream无效。 在关闭流之后可以调用此类中的方法,而不生成IOException

    从以下版本开始:
    1.0
    另请参见:
    StringBufferInputStream
    • 字段汇总

      字段  
      变量和类型 字段 描述
      protected byte[] buf
      由流的创建者提供的字节数组。
      protected int count
      索引1大于输入流缓冲区中的最后一个有效字符。
      protected int mark
      流中当前标记的位置。
      protected int pos
      从输入流缓冲区读取的下一个字符的索引。
    • 构造方法摘要

      构造方法  
      构造器 描述
      ByteArrayInputStream​(byte[] buf)
      创建一个 ByteArrayInputStream以便它使用 buf作为其缓冲区数组。
      ByteArrayInputStream​(byte[] buf, int offset, int length)
      创建 ByteArrayInputStream使用 buf作为其缓冲器阵列。
    • 字段详细信息

      • buf

        protected byte[] buf
        由流的创建者提供的字节数组。 元素buf[0]buf[count-1]是唯一可以从流中读取的字节; element buf[pos]是要读取的下一个字节。
      • pos

        protected int pos
        从输入流缓冲区读取的下一个字符的索引。 此值应始终为非负值且不大于值count 要从输入流缓冲区读取的下一个字节是buf[pos]
      • mark

        protected int mark
        流中当前标记的位置。 默认情况下,ByteArrayInputStream对象在构造时默认标记为零。 它们可以通过mark()方法标记在缓冲区内的另一个位置。 通过reset()方法将当前缓冲区位置设置为此点。

        如果未设置标记,则mark的值是传递给构造函数的偏移量(如果未提供偏移量,则为0)。

        从以下版本开始:
        1.1
      • count

        protected int count
        索引1大于输入流缓冲区中的最后一个有效字符。 此值应始终为非负且不大于buf的长度。 它是一个大于buf中最后一个字节的位置,可以从输入流缓冲区中读取。
    • 构造方法详细信息

      • ByteArrayInputStream

        public ByteArrayInputStream​(byte[] buf)
        创建一个ByteArrayInputStream以便它使用buf作为其缓冲区数组。 不复制缓冲区数组。 的初始值pos0和的初始值count是长度buf
        参数
        buf - 输入缓冲区。
      • ByteArrayInputStream

        public ByteArrayInputStream​(byte[] buf,
                                    int offset,
                                    int length)
        创建ByteArrayInputStream使用buf作为其缓冲器阵列。 的初始值posoffset和的初始值count是最小offset+lengthbuf.length 不复制缓冲区数组。 缓冲区标记设置为指定的偏移量。
        参数
        buf - 输入缓冲区。
        offset - 要读取的第一个字节的缓冲区中的偏移量。
        length - 从缓冲区读取的最大字节数。
    • 方法详细信息

      • read

        public int read()
        从此输入流中读取下一个数据字节。 值字节返回int ,范围为0255 如果由于到达流末尾没有可用字节,则返回值-1

        这种read方法无法阻止。

        Specified by:
        read在课堂上 InputStream
        结果
        数据的下一个字节,如果已到达流的末尾, -1
      • read

        public int read​(byte[] b,
                        int off,
                        int len)
        从此输入流将最多len个字节的数据读入一个字节数组。 如果pos等于count ,则返回-1以指示文件结束。 否则,读取的字节数k等于lencount-pos的较小者。 如果k为正,则字节buf[pos]通过buf[pos+k-1]被复制到b[off]通过b[off+k-1]由执行的方式System.arraycopy k添加到pos并返回k

        这种read方法无法阻止。

        重写:
        readInputStream
        参数
        b - 读取数据的缓冲区。
        off - 目标阵列 b的起始偏移量
        len - 读取的最大字节数。
        结果
        读入缓冲区的总字节数,如果由于已到达流末尾而没有更多数据, -1
        异常
        NullPointerException - 如果 bnull
        IndexOutOfBoundsException - 如果 off为负数, len为负数,或 len为大于 b.length - off
        另请参见:
        InputStream.read()
      • skip

        public long skip​(long n)
        从此输入流中跳过n字节的输入。 如果到达输入流的末尾,则可以跳过更少的字节。 要跳过的实际字节数k等于ncount-pos的较小count-pos k添加到pos并返回k
        重写:
        skipInputStream
        参数
        n - 要跳过的字节数。
        结果
        跳过的实际字节数。
      • available

        public int available()
        返回可从此输入流中读取(或跳过)的剩余字节数。

        返回的值是count - pos ,这是从输入缓冲区中读取的剩余字节数。

        重写:
        available在类 InputStream
        结果
        可以从此输入流中无阻塞地读取(或跳过)的剩余字节数。
      • markSupported

        public boolean markSupported()
        测试此InputStream支持标记/重置。 markSupported方法ByteArrayInputStream始终返回true
        重写:
        markSupported在类 InputStream
        结果
        true如果此流实例支持mark和reset方法; 否则为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