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
-
Constructor Summary
ModifierConstructorDescriptionprotected
通过将参数in
分配给字段this.in
来创建一个FilterInputStream
,以便以后使用时记住它。 -
Method Summary
Modifier and TypeMethodDescriptionint
返回可以从此输入流读取(或跳过)的字节数的估计值,而不会被下一个调用此输入流方法的调用者阻塞。void
close()
关闭此输入流并释放与流关联的任何系统资源。void
mark
(int readlimit) 标记此输入流中的当前位置。boolean
测试此输入流是否支持mark
和reset
方法。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
字节数据。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
。 - 参见:
-