java.lang.Object
java.io.InputStream
java.io.FilterInputStream
- 所有已实现的接口:
Closeable,AutoCloseable
- 已知子类:
BufferedInputStream,CheckedInputStream,CipherInputStream,DataInputStream,DeflaterInputStream,DigestInputStream,InflaterInputStream,LineNumberInputStream,ProgressMonitorInputStream,PushbackInputStream
FilterInputStream 包装一些其他输入流,它用作其基本数据源,可能会沿途转换数据或提供其他功能。类 FilterInputStream 本身简单地覆盖了 InputStream 的选择方法,其版本将所有请求传递到包装的输入流。 FilterInputStream 的子类当然可以覆盖 FilterInputStream 声明或继承的任何方法,并且还可以提供其他字段和方法。
- 自从:
- 1.0
-
字段摘要
字段 -
构造方法总结
构造方法修饰符构造方法描述protected通过将参数in分配给字段this.in创建一个FilterInputStream以便记住它以备后用。 -
方法总结
修饰符和类型方法描述int返回可以从此输入流中读取(或跳过)的字节数的估计值,而不会被此输入流的方法的下一个调用者阻塞。voidclose()关闭此输入流并释放与该流关联的所有系统资源。voidmark(int readlimit) 标记此输入流中的当前位置。boolean测试此输入流是否支持mark和reset方法。intread()从输入流中读取下一个字节的数据。intread(byte[] b) 从此输入流中读取最多b.length字节的数据到字节数组中。intread(byte[] b, int off, int len) 从此输入流中读取最多len字节的数据到字节数组中。voidreset()将此流重新定位到上次对此输入流调用mark方法时的位置。longskip(long n) 跳过并丢弃输入流中的n字节数据。在类 java.io.InputStream 中声明的方法
nullInputStream, readAllBytes, readNBytes, readNBytes, skipNBytes, transferTo
-
字段详细信息
-
in
要过滤的输入流。
-
-
构造方法详细信息
-
FilterInputStream
通过将参数in分配给字段this.in创建一个FilterInputStream以便记住它以备后用。- 参数:
in- 底层输入流,或者null如果要在没有底层流的情况下创建此实例。
-
-
方法详情
-
read
从输入流中读取下一个字节的数据。值字节作为int在0到255范围内返回。如果因为已到达流的末尾而没有可用字节,则返回值-1。此方法会阻塞,直到输入数据可用、检测到流结束或抛出异常为止。- 指定者:
read在类InputStream中- 实现要求:
-
此方法只是执行
in.read()并返回结果。 - 返回:
-
下一个数据字节,如果到达流的末尾则为
-1。 - 抛出:
IOException- 如果发生 I/O 错误。- 参见:
-
read
从此输入流中读取最多b.length字节的数据到字节数组中。在某些输入可用之前,此方法会阻塞。- 重写:
read在类InputStream中- 实现要求:
-
此方法仅执行调用
read(b, 0, b.length)并返回结果。重要的是它做到了not做in.read(b)代替;FilterInputStream的某些子类取决于实际使用的实现策略。 - 参数:
b- 读取数据的缓冲区。- 返回:
-
读入缓冲区的字节总数,如果因为已到达流的末尾而没有更多数据,则为
-1。 - 抛出:
IOException- 如果发生 I/O 错误。- 参见:
-
read
从此输入流中读取最多len字节的数据到字节数组中。如果len不为零,则该方法会阻塞,直到某些输入可用;否则,不读取任何字节并返回0。- 重写:
read在类InputStream中- 实现要求:
-
此方法仅执行
in.read(b, off, len)并返回结果。 - 参数:
b- 读取数据的缓冲区。off- 写入数据的数组b中的起始偏移量。len- 要读取的最大字节数。- 返回:
-
读入缓冲区的字节总数,如果因为已到达流的末尾而没有更多数据,则为
-1。 - 抛出:
NullPointerException- 如果b是null。IndexOutOfBoundsException- 如果off为负,len为负,或者len大于b.length - offIOException- 如果发生 I/O 错误。- 参见:
-
skip
跳过并丢弃输入流中的n字节数据。由于各种原因,skip方法可能最终会跳过一些较少的字节,可能是0。返回实际跳过的字节数。- 重写:
skip在类InputStream中- 实现要求:
-
此方法仅执行
in.skip(n)并返回结果。 - 参数:
n- 要跳过的字节数。- 返回:
- 实际跳过的字节数。
- 抛出:
IOException- 如果in.skip(n)抛出 IOException。- 参见:
-
available
返回可以从此输入流中读取(或跳过)的字节数的估计值,而不会被此输入流的方法的下一个调用者阻塞。下一个调用者可能是同一个线程或另一个线程。单次读取或跳过这么多字节不会阻塞,但可能会读取或跳过更少的字节。- 重写:
available在类InputStream中- 实现要求:
-
此方法返回
in.available()的结果。 - 返回:
- 可以从该输入流中无阻塞地读取(或跳过)的字节数的估计值。
- 抛出:
IOException- 如果发生 I/O 错误。
-
close
关闭此输入流并释放与该流关联的所有系统资源。- 指定者:
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
将此流重新定位到上次对此输入流调用mark方法时的位置。流标记旨在用于需要提前阅读以查看流中内容的情况。通常这最容易通过调用一些通用解析器来完成。如果流是解析器处理的类型,它就会愉快地进行。如果流不是那种类型,解析器应该在失败时抛出一个异常。如果这发生在 readlimit 字节内,它允许外部代码重置流并尝试另一个解析器。
- 重写:
reset在类InputStream中- 实现要求:
-
此方法仅执行
in.reset()。 - 抛出:
IOException- 如果此流未被标记或标记已失效。- 参见:
-
markSupported
public boolean markSupported()测试此输入流是否支持mark和reset方法。- 重写:
markSupported在类InputStream中- 实现要求:
-
此方法仅执行
in.markSupported()。 - 返回:
true如果此流类型支持mark和reset方法;false否则。- 参见:
-