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
-
Field Summary
Fields -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotected通过将参数in分配给字段this.in来创建一个FilterInputStream,以便以后使用时记住它。 -
Method Summary
Modifier and TypeMethodDescriptionint返回可以从此输入流读取(或跳过)的字节数的估计值,而不会被下一个调用此输入流方法的调用者阻塞。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字节数据。Methods declared in class java.io.InputStream
nullInputStream, readAllBytes, readNBytes, readNBytes, skipNBytes, transferTo
-
Field Details
-
in
要过滤的输入流。
-
-
Constructor Details
-
FilterInputStream
通过将参数in分配给字段this.in来创建一个FilterInputStream,以便以后使用时记住它。- 参数:
-
in- 基础输入流,如果要创建此实例而没有基础流,则为null。
-
-
Method Details
-
read
从输入流中读取下一个字节的数据。将值字节作为int返回,范围为0到255。如果没有字节可用,因为已到达流的末尾,则返回值为-1。此方法将阻塞,直到有输入数据可用,检测到流的末尾,或抛出异常。- 指定者:
-
read在类InputStream - 实现要求:
-
此方法只是执行
in.read()并返回结果。 - 返回:
-
下一个数据字节,如果已到达流的末尾,则为
-1。 - 抛出:
-
IOException- 如果发生 I/O 错误。 - 参见:
-
read
从此输入流中读取最多b.length字节的数据到字节数组中。此方法将阻塞,直到有输入可用。- 覆盖:
-
read在类InputStream - 实现要求:
-
此方法只是执行调用
read(b, 0, b.length)并返回结果。重要的是它实际上不执行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 - off。 -
IOException- 如果发生 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()。 - 返回:
-
如果此流类型支持
mark和reset方法,则返回true;否则返回false。 - 参见:
-