|
JavaTM Platform Standard Ed. 6 |
|||||||||
上一个类 下一个类 | 框架 无框架 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
java.lang.Object java.io.InputStream java.io.FilterInputStream
public class FilterInputStream
FilterInputStream
包含其他一些输入流,它将这些流用作其基本数据源,它可以直接传输数据或提供一些额外的功能。FilterInputStream
类本身只是简单地重写那些将所有请求传递给所包含输入流的 InputStream
的所有方法。FilterInputStream
的子类可进一步重写这些方法中的一些方法,并且还可以提供一些额外的方法和字段。
字段摘要 | |
---|---|
protected InputStream |
in
要过滤的输入流。 |
构造方法摘要 | |
---|---|
protected |
FilterInputStream(InputStream in)
将参数 in 分配给字段 this.in ,以便记住它供以后使用,通过这种方式创建一个 FilterInputStream 。 |
方法摘要 | |
---|---|
int |
available()
返回下一次对此输入流调用的方法可以不受阻塞地从此输入流读取(或跳过)的估计剩余字节数。 |
void |
close()
关闭此输入流并释放与此流关联的所有系统资源。 |
void |
mark(int readlimit)
在输入流中的当前位置上作标记。 |
boolean |
markSupported()
测试此输入流是否支持 mark 和 reset 方法。 |
int |
read()
从此输入流中读取下一个数据字节。 |
int |
read(byte[] b)
从此输入流中将 byte.length 个字节的数据读入一个 byte 数组中。 |
int |
read(byte[] b,
int off,
int len)
从此输入流中将 len 个字节的数据读入一个 byte 数组中。 |
void |
reset()
将此流重新定位到对此输入流最后调用 mark 方法时的位置。 |
long |
skip(long n)
跳过和丢弃此输入流中数据的 n 个字节。 |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
字段详细信息 |
---|
protected volatile InputStream in
构造方法详细信息 |
---|
protected FilterInputStream(InputStream in)
in
分配给字段 this.in
,以便记住它供以后使用,通过这种方式创建一个 FilterInputStream
。
in
- 底层输入流,如果要在没有底层流的情况下创建此实例,则该参数为 null
。方法详细信息 |
---|
public int read() throws IOException
0
到 255
范围内的 int
字节值。如果因为已经到达流末尾而没有字节可用,则返回 -1
。在输入数据可用、检测到流末尾或抛出异常之前,此方法将一直阻塞。
此方法只执行 in.read()
并返回结果。
InputStream
中的 read
-1
。
IOException
- 如果发生 I/O 错误。in
public int read(byte[] b) throws IOException
byte.length
个字节的数据读入一个 byte 数组中。在某些输入可用之前,此方法将阻塞。
此方法只执行 read(b, 0, b.length)
调用并返回结果。注意到它不 执行 in.read(b)
很重要;FilterInputStream
的某些子类依赖于实际使用的实现策略。
InputStream
中的 read
b
- 存储读取数据的缓冲区。
-1
。
IOException
- 如果发生 I/O 错误。read(byte[], int, int)
public int read(byte[] b, int off, int len) throws IOException
len
个字节的数据读入一个 byte 数组中。如果 len
不为 0,则在输入可用前,此方法将阻塞;否则,不读取任何字节并且返回 0
。
此方法只执行 in.read(b, off, len)
并返回结果。
InputStream
中的 read
b
- 存储读取数据的缓冲区。off
- 目标数组 b
中的起始偏移量。len
- 读取的最大字节数。
-1
。
NullPointerException
- 如果 b
为 null
。
IndexOutOfBoundsException
- 如果 off
为负、len
为负,或者 len
大于 b.length - off
IOException
- 如果发生 I/O 错误。in
public long skip(long n) throws IOException
n
个字节。出于各种原因,skip
方法结束时跳过的字节数可能小于该数,也可能为 0
。导致这种情况的原因很多,跳过 n
个字节之前已到达文件末尾只是其中一种可能。返回跳过的实际字节数。如果 n
为负,则不跳过任何字节。
此类的 skip
方法创建一个 byte 数组,然后重复将字节读入其中,直到读够 n
个字节或已到达流末尾为止。建议子类提供此方法更为有效的实现。例如,可依赖搜索能力的实现。
此方法只执行 in.skip(n)
。
InputStream
中的 skip
n
- 要跳过的字节数。
IOException
- 如果流不支持搜索,或者发生其他 I/O 错误。public int available() throws IOException
此方法返回 in
.available() 的结果。
InputStream
中的 available
IOException
- 如果发生 I/O 错误。public void close() throws IOException
in.close()
。
Closeable
中的 close
InputStream
中的 close
IOException
- 如果发生 I/O 错误。in
public void mark(int readlimit)
reset
方法的后续调用将此流重新定位在最后标记的位置上,以便后续读取操作重新读取相同的字节。
readlimit
参数告知此输入流在标记位置无效之前允许读取的字节数。
此方法只执行 in.mark(readlimit)
。
InputStream
中的 mark
readlimit
- 在标记位置变得无效前可以读取字节的最大限制。in
,
reset()
public void reset() throws IOException
mark
方法时的位置。
此方法只执行 in.reset()
。
在需要提前读取一小部分数据以查看流中有什么的情况下,可以使用流的标记。通过调用通用解析器常常最容易做到这一点。如果流属于通过解析处理的类型,那么解析起来就很容易。如果流不属于那种类型,那么解析器应该在解析失败时抛出一个异常。如果这发生在 readlimit 个字节内,那么它允许外部代码重置流,并尝试另一种解析器。
InputStream
中的 reset
IOException
- 如果已经标记了该流,或者标记已经无效。in
,
mark(int)
public boolean markSupported()
mark
和 reset
方法。此方法只执行 in.markSupported()
。
InputStream
中的 markSupported
mark
和 reset
方法,则返回 true
;否则返回 false
。in
,
InputStream.mark(int)
,
InputStream.reset()
|
JavaTM Platform Standard Ed. 6 |
|||||||||
上一个类 下一个类 | 框架 无框架 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
版权所有 2007 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策。