Most visited

Recently visited

Added in API level 1

FilterInputStream

public class FilterInputStream
extends InputStream

java.lang.Object
   ↳ java.io.InputStream
     ↳ java.io.FilterInputStream
Known Direct Subclasses
Known Indirect Subclasses


一个FilterInputStream包含一些其他输入流,它用作其基本数据源,可能会沿途转换数据或提供附加功能。 FilterInputStream本身只是简单地重写的所有方法InputStream与传递给所包含输入流的所有请求的版本。 FilterInputStream子类可能会进一步覆盖其中一些方法,并且还可能提供其他方法和字段。

Summary

Fields

protected InputStream in

要过滤的输入流。

Protected constructors

FilterInputStream(InputStream in)

创建 FilterInputStream通过分配参数 in到外地 this.in ,以便记住它供以后使用。

Public methods

int available()

返回可以从此输入流读取(或跳过)的字节数的估计值,而不会被此输入流的下一个调用者方法阻塞。

void close()

关闭此输入流并释放与该流关联的所有系统资源。

void mark(int readlimit)

标记此输入流中的当前位置。

boolean markSupported()

测试此输入流是否支持 markreset方法。

int read()

从此输入流中读取下一个字节的数据。

int read(byte[] b, int off, int len)

最多可将 len字节的数据从此输入流转换为字节数组。

int read(byte[] b)

从该输入流中最多读取 byte.length个字节的数据到一个字节数组中。

void reset()

将此流重新定位到上次在此输入流上调用 mark方法时的位置。

long skip(long n)

跳过并丢弃来自输入流的 n字节的数据。

Inherited methods

From class java.io.InputStream
From class java.lang.Object
From interface java.io.Closeable
From interface java.lang.AutoCloseable

Fields

in

Added in API level 1
InputStream in

要过滤的输入流。

Protected constructors

FilterInputStream

Added in API level 1
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.

Public methods

available

Added in API level 1
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.

close

Added in API level 1
void close ()

关闭此输入流并释放与该流关联的所有系统资源。 该方法仅执行in.close()

Throws
IOException if an I/O error occurs.

也可以看看:

mark

Added in API level 1
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.

也可以看看:

markSupported

Added in API level 1
boolean markSupported ()

测试此输入流是否支持markreset方法。 此方法仅执行in.markSupported()

Returns
boolean true if this stream type supports the mark and reset method; false otherwise.

也可以看看:

read

Added in API level 1
int read ()

从此输入流中读取下一个字节的数据。 值字节被返回作为int范围0255 如果由于已到达流的末尾而没有可用的字节,则返回值-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.

也可以看看:

read

Added in API level 1
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.

也可以看看:

read

Added in API level 1
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.

也可以看看:

reset

Added in API level 1
void reset ()

将此流重新定位到上次在此输入流上调用 mark方法时的位置。

该方法仅执行 in.reset()

流标记旨在用于需要稍微阅读以查看流中内容的情况。 这通常通过调用一些通用解析器来完成。 如果数据流是解析处理的类型,它就会快乐地跳出来。 如果流不是这种类型,那么解析器在失败时应该抛出一个异常。 如果这发生在readlimit字节内,它允许外部代码重置流并尝试另一个分析器。

Throws
IOException if the stream has not been marked or if the mark has been invalidated.

也可以看看:

skip

Added in API level 1
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.

Hooray!