Module  java.base
软件包  java.io

Class FilterInputStream

    • Field Summary

      Fields  
      Modifier and Type Field 描述
      protected InputStream in
      要过滤的输入流。
    • 构造方法摘要

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

      所有方法  接口方法  具体的方法 
      Modifier and Type 方法 描述
      int available​()
      返回从该输入流中可以读取(或跳过)的字节数的估计,而不会被下一个调用者阻塞该输入流的方法。
      void close​()
      关闭此输入流并释放与流相关联的任何系统资源。
      void mark​(int readlimit)
      标记此输入流中的当前位置。
      boolean markSupported​()
      测试此输入流是否支持 markreset方法。
      int read​()
      从该输入流读取下一个数据字节。
      int read​(byte[] b)
      从该输入流读取高达 b.length字节的数据到字节数组。
      int read​(byte[] b, int off, int 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:
        readInputStream
        结果
        数据的下一个字节,如果达到流的末尾, -1
        异常
        IOException - 如果发生I / O错误。
        另请参见:
        in
      • read

        public int read​(byte[] b)
                 throws IOException
        从该输入流读取最多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不为零,该方法将阻塞,直到有些输入可用; 否则,不会读取字节,并返回0

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

        重写:
        readInputStream
        参数
        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)

        重写:
        skip在类 InputStream
        参数
        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)

        重写:
        markInputStream
        参数
        readlimit - 在标记位置无效之前可以读取的最大字节数限制。
        另请参见:
        inreset()
      • reset

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

        该方法简单地执行in.reset()

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

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

        public boolean markSupported​()
        测试此输入流是否支持markreset方法。 这种方法只需执行in.markSupported()
        重写:
        markSupportedInputStream
        结果
        true如果这种流类型支持markreset方法; 否则为false
        另请参见:
        inInputStream.mark(int)InputStream.reset()