模块  java.base
软件包  java.io

Class FilterInputStream

    • 字段汇总

      字段  
      变量和类型 字段 描述
      protected InputStream in
      要过滤的输入流。
    • 构造方法摘要

      构造方法  
      变量 构造器 描述
      protected FilterInputStream​(InputStream in)
      创建 FilterInputStream通过分配参数 in到外地 this.in ,以便记住它供以后使用。
    • 方法摘要

      所有方法  实例方法 具体的方法 
      变量和类型 方法 描述
      int available()
      返回可以从此输入流中读取(或跳过)的字节数的估计值,而不会被此输入流的方法的下一个调用方阻塞。
      void close()
      关闭此输入流并释放与该流关联的所有系统资源。
      void mark​(int readlimit)
      标记此输入流中的当前位置。
      boolean markSupported()
      测试此输入流是否支持 markreset方法。
      int read()
      从此输入流中读取下一个数据字节。
      int read​(byte[] b)
      从此输入流将最多 b.length字节的数据读 b.length字节数组。
      int read​(byte[] b, int off, int len)
      从此输入流 len最多 len字节的数据读入一个字节数组。
      void reset()
      将此流重新定位到上次在此输入流上调用 mark方法时的位置。
      long skip​(long n)
      跳过并从输入流中丢弃 n字节的数据。
    • 字段详细信息

      • in

        protected volatile InputStream in
        要过滤的输入流。
    • 构造方法详细信息

      • FilterInputStream

        protected FilterInputStream​(InputStream in)
        创建 FilterInputStream通过分配参数 in到外地 this.in ,以便记住它供以后使用。
        参数
        in - 基础输入流,如果要在没有基础流的情况下创建此实例, null
    • 方法详细信息

      • read

        public int read()
                 throws IOException
        从此输入流中读取下一个数据字节。 值字节作为int返回,范围为0255 如果由于到达流末尾而没有可用字节,则返回值-1 此方法将阻塞,直到输入数据可用,检测到流的末尾或抛出异常。

        此方法只执行in.read()并返回结果。

        Specified by:
        read在类 InputStream
        结果
        数据的下一个字节,如果到达流的末尾, -1
        异常
        IOException - 如果发生I / O错误。
        另请参见:
        in
      • read

        public int read​(byte[] b)
                 throws IOException
        从此输入流b.length最多b.length字节的数据读入一个字节数组。 此方法将阻塞,直到某些输入可用。

        此方法只执行调用read(b, 0, b.length)并返回结果。 重要的是它不能代替in.read(b) ; FilterInputStream某些子类取决于实际使用的实现策略。

        重写:
        readInputStream
        参数
        b - 读取数据的缓冲区。
        结果
        读入缓冲区的总字节数,如果由于已到达流末尾而没有更多数据, -1
        异常
        IOException - 如果发生I / O错误。
        另请参见:
        read(byte[], int, int)
      • read

        public int read​(byte[] b,
                        int off,
                        int len)
                 throws IOException
        从此输入流len最多len个字节的数据读入一个字节数组。 如果len不为零,则该方法将阻塞,直到某些输入可用; 否则,不读取任何字节,并返回0

        此方法只执行in.read(b, off, len)并返回结果。

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

        public long skip​(long n)
                  throws IOException
        跳过并从输入流中丢弃n字节的数据。 由于各种原因, skip方法可能最终跳过一些较小数量的字节,可能是0 返回跳过的实际字节数。

        此方法只执行in.skip(n)

        重写:
        skipInputStream
        参数
        n - 要跳过的字节数。
        结果
        跳过的实际字节数。
        异常
        IOException - 如果 in.skip(n)抛出IOException。
      • available

        public int available()
                      throws IOException
        返回可以从此输入流中读取(或跳过)的字节数的估计值,而不会被此输入流的方法的下一个调用方阻塞。 下一个调用者可能是同一个线程或另一个线程。 单个读取或跳过这么多字节不会阻塞,但可以读取或跳过更少的字节。

        此方法返回in .available()的结果。

        重写:
        availableInputStream
        结果
        估计可以从此输入流中无阻塞地读取(或跳过)的字节数。
        异常
        IOException - 如果发生I / O错误。
      • mark

        public void mark​(int readlimit)
        标记此输入流中的当前位置。 随后对reset方法的调用会在最后标记的位置重新定位此流,以便后续读取重新读取相同的字节。

        readlimit参数告诉此输入流允许在标记位置失效之前读取许多字节。

        此方法只执行in.mark(readlimit)

        重写:
        mark在类 InputStream
        参数
        readlimit - 标记位置变为无效之前可读取的最大字节数。
        另请参见:
        inreset()
      • reset

        public void reset()
                   throws IOException
        将此流重新定位到上次在此输入流上调用mark方法时的位置。

        此方法只执行in.reset()

        流标记旨在用于需要提前阅读以查看流中的内容的情况。 通常,这通过调用一些通用解析器最容易完成。 如果流是由解析处理的类型,那么它只是愉快地开始。 如果流不是该类型,则解析器在失败时应该抛出异常。 如果这发生在readlimit字节内,它允许外部代码重置流并尝试另一个解析器。

        重写:
        resetInputStream
        异常
        IOException - 如果未标记流或标记已失效。
        另请参见:
        inmark(int)