public class FilterInputStream
extends InputStream
java.lang.Object | ||
↳ | java.io.InputStream | |
↳ | java.io.FilterInputStream |
Known Direct Subclasses |
Known Indirect Subclasses |
一个FilterInputStream
包含一些其他输入流,它用作其基本数据源,可能会沿途转换数据或提供附加功能。 类FilterInputStream
本身只是简单地重写的所有方法InputStream
与传递给所包含输入流的所有请求的版本。 FilterInputStream
子类可能会进一步覆盖其中一些方法,并且还可能提供其他方法和字段。
Fields |
|
---|---|
protected InputStream |
in 要过滤的输入流。 |
Protected constructors |
|
---|---|
FilterInputStream(InputStream in) 创建 |
Public methods |
|
---|---|
int |
available() 返回可以从此输入流读取(或跳过)的字节数的估计值,而不会被此输入流的下一个调用者方法阻塞。 |
void |
close() 关闭此输入流并释放与该流关联的所有系统资源。 |
void |
mark(int readlimit) 标记此输入流中的当前位置。 |
boolean |
markSupported() 测试此输入流是否支持 |
int |
read() 从此输入流中读取下一个字节的数据。 |
int |
read(byte[] b, int off, int len) 最多可将 |
int |
read(byte[] b) 从该输入流中最多读取 |
void |
reset() 将此流重新定位到上次在此输入流上调用 |
long |
skip(long n) 跳过并丢弃来自输入流的 |
Inherited methods |
|
---|---|
From class java.io.InputStream
|
|
From class java.lang.Object
|
|
From interface java.io.Closeable
|
|
From interface java.lang.AutoCloseable
|
FilterInputStream (InputStream in)
创建 FilterInputStream
通过分配参数 in
到外地 this.in
,以便记住它供以后使用。
Parameters | |
---|---|
in |
InputStream : the underlying input stream, or null if this instance is to be created without an underlying stream. |
int available ()
返回可以从此输入流读取(或跳过)的字节数的估计值,而不会被此输入流的下一个调用者方法阻塞。 下一个调用者可能是同一个线程或另一个线程。 单个读取或跳过这么多字节不会被阻塞,但可以读取或跳过更少的字节。
此方法返回 in
.available()的结果。
Returns | |
---|---|
int |
an estimate of the number of bytes that can be read (or skipped over) from this input stream without blocking. |
Throws | |
---|---|
IOException |
if an I/O error occurs. |
void close ()
关闭此输入流并释放与该流关联的所有系统资源。 该方法仅执行in.close()
。
Throws | |
---|---|
IOException |
if an I/O error occurs. |
也可以看看:
void mark (int readlimit)
标记此输入流中的当前位置。 随后调用reset
方法将此流重新定位到最后标记的位置,以便后续读取重新读取相同的字节。
参数 readlimit
告诉该输入流允许在标记位置失效之前读取很多字节。
该方法仅执行 in.mark(readlimit)
。
Parameters | |
---|---|
readlimit |
int : the maximum limit of bytes that can be read before the mark position becomes invalid. |
boolean markSupported ()
测试此输入流是否支持mark
和reset
方法。 此方法仅执行in.markSupported()
。
Returns | |
---|---|
boolean |
true if this stream type supports the mark and reset method; false otherwise. |
int read ()
从此输入流中读取下一个字节的数据。 值字节被返回作为int
范围0
到255
。 如果由于已到达流的末尾而没有可用的字节,则返回值-1
。 此方法阻塞直到输入数据可用,流的末尾被检测到,或抛出异常。
此方法仅执行 in.read()
并返回结果。
Returns | |
---|---|
int |
the next byte of data, or -1 if the end of the stream is reached. |
Throws | |
---|---|
IOException |
if an I/O error occurs. |
也可以看看:
int read (byte[] b, int off, int len)
最多可将len
字节的数据从此输入流转换为字节数组。 如果len
不为零,则该方法将阻塞,直到某些输入可用; 否则,不读取字节并返回0
。
该方法仅执行 in.read(b, off, len)
并返回结果。
Parameters | |
---|---|
b |
byte : the buffer into which the data is read. |
off |
int : the start offset in the destination array b |
len |
int : the maximum number of bytes read. |
Returns | |
---|---|
int |
the total number of bytes read into the buffer, or -1 if there is no more data because the end of the stream has been reached. |
Throws | |
---|---|
NullPointerException |
If b is null . |
IndexOutOfBoundsException |
If off is negative, len is negative, or len is greater than b.length - off |
IOException |
if an I/O error occurs. |
也可以看看:
int read (byte[] b)
最多可将byte.length
个字节的数据从此输入流转换为字节数组。 此方法阻塞,直到有些输入可用。
该方法只是执行调用read(b, 0, b.length)
并返回结果。 它没有做到这一点是很重要in.read(b)
代替; 某些FilterInputStream
子类取决于实际使用的实施策略。
Parameters | |
---|---|
b |
byte : the buffer into which the data is read. |
Returns | |
---|---|
int |
the total number of bytes read into the buffer, or -1 if there is no more data because the end of the stream has been reached. |
Throws | |
---|---|
IOException |
if an I/O error occurs. |
也可以看看:
void reset ()
将此流重新定位到上次在此输入流上调用 mark
方法时的位置。
该方法仅执行 in.reset()
。
流标记旨在用于需要稍微阅读以查看流中内容的情况。 这通常通过调用一些通用解析器来完成。 如果数据流是解析处理的类型,它就会快乐地跳出来。 如果流不是这种类型,那么解析器在失败时应该抛出一个异常。 如果这发生在readlimit字节内,它允许外部代码重置流并尝试另一个分析器。
Throws | |
---|---|
IOException |
if the stream has not been marked or if the mark has been invalidated. |
long skip (long n)
跳过并丢弃来自输入流的n
字节的数据。 由于各种原因, skip
方法可能会跳过一些较小的字节数,可能是0
。 返回跳过的实际字节数。
该方法仅执行 in.skip(n)
。
Parameters | |
---|---|
n |
long : the number of bytes to be skipped. |
Returns | |
---|---|
long |
the actual number of bytes skipped. |
Throws | |
---|---|
IOException |
if the stream does not support seek, or if some other I/O error occurs. |