模块 java.base
 java.io

类 FilterInputStream

java.lang.Object
java.io.InputStream
java.io.FilterInputStream
所有已实现的接口:
Closeable , AutoCloseable
已知子类:
BufferedInputStream , CheckedInputStream , CipherInputStream , DataInputStream , DeflaterInputStream , DigestInputStream , InflaterInputStream , LineNumberInputStream , ProgressMonitorInputStream , PushbackInputStream

public class FilterInputStream extends InputStream
FilterInputStream 包装一些其他输入流,它用作其基本数据源,可能会沿途转换数据或提供其他功能。类 FilterInputStream 本身简单地覆盖了 InputStream 的选择方法,其版本将所有请求传递到包装的输入流。 FilterInputStream 的子类当然可以覆盖 FilterInputStream 声明或继承的任何方法,并且还可以提供其他字段和方法。
自从:
1.0
  • 字段摘要

    字段
    修饰符和类型
    Field
    描述
    protected InputStream
    要过滤的输入流。
  • 构造方法总结

    构造方法
    修饰符
    构造方法
    描述
    protected
    通过将参数 in 分配给字段 this.in 创建一个 FilterInputStream 以便记住它以备后用。
  • 方法总结

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

    在类 java.lang.Object 中声明的方法

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • 字段详细信息

    • in

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

    • FilterInputStream

      protected FilterInputStream(InputStream  in)
      通过将参数 in 分配给字段 this.in 创建一个 FilterInputStream 以便记住它以备后用。
      参数:
      in - 底层输入流,或者 null 如果要在没有底层流的情况下创建此实例。
  • 方法详情

    • read

      public int read() throws IOException
      从输入流中读取下一个字节的数据。值字节作为 int0255 范围内返回。如果因为已到达流的末尾而没有可用字节,则返回值 -1。此方法会阻塞,直到输入数据可用、检测到流结束或抛出异常为止。
      指定者:
      read 在类 InputStream
      实现要求:
      此方法只是执行 in.read() 并返回结果。
      返回:
      下一个数据字节,如果到达流的末尾则为 -1
      抛出:
      IOException - 如果发生 I/O 错误。
      参见:
    • read

      public int read(byte[] b) throws IOException
      从此输入流中读取最多 b.length 字节的数据到字节数组中。在某些输入可用之前,此方法会阻塞。
      重写:
      read 在类 InputStream
      实现要求:
      此方法仅执行调用 read(b, 0, b.length) 并返回结果。重要的是它做到了notin.read(b) 代替; FilterInputStream 的某些子类取决于实际使用的实现策略。
      参数:
      b - 读取数据的缓冲区。
      返回:
      读入缓冲区的字节总数,如果因为已到达流的末尾而没有更多数据,则为 -1
      抛出:
      IOException - 如果发生 I/O 错误。
      参见:
    • read

      public int read(byte[] b, int off, int len) throws IOException
      从此输入流中读取最多 len 字节的数据到字节数组中。如果 len 不为零,则该方法会阻塞,直到某些输入可用;否则,不读取任何字节并返回 0
      重写:
      read 在类 InputStream
      实现要求:
      此方法仅执行 in.read(b, off, len) 并返回结果。
      参数:
      b - 读取数据的缓冲区。
      off - 写入数据的数组 b 中的起始偏移量。
      len - 要读取的最大字节数。
      返回:
      读入缓冲区的字节总数,如果因为已到达流的末尾而没有更多数据,则为 -1
      抛出:
      NullPointerException - 如果 bnull
      IndexOutOfBoundsException - 如果 off 为负,len 为负,或者 len 大于 b.length - off
      IOException - 如果发生 I/O 错误。
      参见:
    • skip

      public long skip(long n) throws IOException
      跳过并丢弃输入流中的 n 字节数据。由于各种原因,skip 方法可能最终会跳过一些较少的字节,可能是 0。返回实际跳过的字节数。
      重写:
      skip 在类 InputStream
      实现要求:
      此方法仅执行 in.skip(n) 并返回结果。
      参数:
      n - 要跳过的字节数。
      返回:
      实际跳过的字节数。
      抛出:
      IOException - 如果 in.skip(n) 抛出 IOException。
      参见:
    • available

      public int available() throws IOException
      返回可以从此输入流中读取(或跳过)的字节数的估计值,而不会被此输入流的方法的下一个调用者阻塞。下一个调用者可能是同一个线程或另一个线程。单次读取或跳过这么多字节不会阻塞,但可能会读取或跳过更少的字节。
      重写:
      available 在类 InputStream
      实现要求:
      此方法返回 in.available() 的结果。
      返回:
      可以从该输入流中无阻塞地读取(或跳过)的字节数的估计值。
      抛出:
      IOException - 如果发生 I/O 错误。
    • close

      public void close() throws IOException
      关闭此输入流并释放与该流关联的所有系统资源。
      指定者:
      close 在接口 AutoCloseable
      指定者:
      close 在接口 Closeable
      重写:
      close 在类 InputStream
      实现要求:
      此方法仅执行 in.close()
      抛出:
      IOException - 如果发生 I/O 错误。
      参见:
    • mark

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

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

      重写:
      mark 在类 InputStream
      实现要求:
      此方法仅执行 in.mark(readlimit)
      参数:
      readlimit - 在标记位置变为无效之前可以读取的最大字节数限制。
      参见:
    • reset

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

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

      重写:
      reset 在类 InputStream
      实现要求:
      此方法仅执行 in.reset()
      抛出:
      IOException - 如果此流未被标记或标记已失效。
      参见:
    • markSupported

      public boolean markSupported()
      测试此输入流是否支持 markreset 方法。
      重写:
      markSupported 在类 InputStream
      实现要求:
      此方法仅执行 in.markSupported()
      返回:
      true 如果此流类型支持 markreset 方法; false否则。
      参见: