public class PushbackInputStream
extends FilterInputStream
java.lang.Object | |||
↳ | java.io.InputStream | ||
↳ | java.io.FilterInputStream | ||
↳ | java.io.PushbackInputStream |
PushbackInputStream
为另一个输入流增加了功能,即能够“推回”或“未读”一个字节。 这对于一段代码便于读取由特定字节值分隔的无限数量的数据字节的情况很有用; 在读取终止字节后,代码片段可以“读取”它,以便输入流上的下一个读取操作将重新读取被推回的字节。 例如,表示构成标识符的字符的字节可以由表示操作符字符的字节终止; 一个只读取标识符的工作方法可以读取,直到它看到操作员,然后推回操作员重新读取。
Fields |
|
---|---|
protected byte[] |
buf 推回缓冲区。 |
protected int |
pos 推回缓冲区中将读取下一个字节的位置。 |
Inherited fields |
---|
From class java.io.FilterInputStream
|
Public constructors |
|
---|---|
PushbackInputStream(InputStream in, int size) 创建 |
|
PushbackInputStream(InputStream in) 创建一个 |
Public methods |
|
---|---|
int |
available() 返回可从此输入流读取(或跳过)的字节数的估计值,而不会因为此输入流的下一次调用方法而被阻止。 |
void |
close() 关闭此输入流并释放与该流关联的所有系统资源。 |
void |
mark(int readlimit) 标记此输入流中的当前位置。 |
boolean |
markSupported() 测试此输入流是否支持 |
int |
read() 从此输入流中读取下一个字节的数据。 |
int |
read(byte[] b, int off, int len) 从这个输入流中最多读取 |
void |
reset() 将此流重新定位到上次在此输入流上调用 |
long |
skip(long n) 跳过并丢弃来自此输入流的 |
void |
unread(byte[] b, int off, int len) 通过将字节数组的一部分复制到推回缓冲区的前面来推回字节数组的一部分。 |
void |
unread(int b) 通过将其复制到推回缓冲区的前面来推回一个字节。 |
void |
unread(byte[] b) 通过将字节数组复制到推回缓冲区的前面来推回字节数组。 |
Inherited methods |
|
---|---|
From class java.io.FilterInputStream
|
|
From class java.io.InputStream
|
|
From class java.lang.Object
|
|
From interface java.io.Closeable
|
|
From interface java.lang.AutoCloseable
|
PushbackInputStream (InputStream in, int size)
创建PushbackInputStream
具有指定的推回缓冲器size
,并保存其参数,输入流in
,供以后使用。 最初,没有推回式字节(字段pushBack
初始化为-1
)。
Parameters | |
---|---|
in |
InputStream : the input stream from which bytes will be read. |
size |
int : the size of the pushback buffer. |
Throws | |
---|---|
IllegalArgumentException |
if size is <= 0 |
PushbackInputStream (InputStream in)
创建一个PushbackInputStream
并保存其参数,即输入流in
,以备后用。 最初,没有后退字节(字段pushBack
初始化为-1
)。
Parameters | |
---|---|
in |
InputStream : the input stream from which bytes will be read. |
int available ()
返回可从此输入流读取(或跳过)的字节数的估计值,而不会因为此输入流的下一次调用方法而被阻止。 下一次调用可能是同一个线程或另一个线程。 单个读取或跳过这么多字节不会被阻塞,但可以读取或跳过更少的字节。
该方法返回已被推回的字节数与由 available
返回的值之和。
Returns | |
---|---|
int |
the number of bytes that can be read (or skipped over) from the input stream without blocking. |
Throws | |
---|---|
IOException |
if this input stream has been closed by invoking its close() method, or an I/O error occurs. |
也可以看看:
void close ()
关闭此输入流并释放与该流关联的所有系统资源。 一旦流被关闭,进一步的read(),unread(),available(),reset()或skip()调用将引发IOException。 关闭以前关闭的流不起作用。
Throws | |
---|---|
IOException |
if an I/O error occurs. |
void mark (int readlimit)
标记此输入流中的当前位置。
mark
方法 PushbackInputStream
什么都不做。
Parameters | |
---|---|
readlimit |
int : the maximum limit of bytes that can be read before the mark position becomes invalid. |
也可以看看:
boolean markSupported ()
测试此输入流是否支持 mark
和 reset
方法,但不支持。
Returns | |
---|---|
boolean |
false , since this class does not support the mark and reset methods. |
int read ()
从此输入流中读取下一个字节的数据。 值字节被返回作为int
范围0
到255
。 如果由于已到达流的末尾而没有字节可用,则返回值-1
。 此方法阻塞直到输入数据可用,流的末尾被检测到,或抛出异常。
此方法返回最近推回的字节(如果有),否则调用其基础输入流的 read
方法并返回该方法返回的任何值。
Returns | |
---|---|
int |
the next byte of data, or -1 if the end of the stream has been reached. |
Throws | |
---|---|
IOException |
if this input stream has been closed by invoking its close() method, or an I/O error occurs. |
也可以看看:
int read (byte[] b, int off, int len)
最多可将len
个字节的数据从此输入流转换为字节数组。 该方法首先读取任何推回的字节; 在此之后,如果少于len
个字节被读取,则它从底层输入流中读取。 如果len
不为零,则方法会阻塞,直到输入的至少1个字节可用; 否则,不读取字节并返回0
。
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 this input stream has been closed by invoking its close() method, or an I/O error occurs. |
也可以看看:
void reset ()
将此流重新定位到上次在此输入流上调用 mark
方法时的位置。
类 PushbackInputStream
的方法 reset
除了抛出 IOException
之外什么也不 IOException
。
Throws | |
---|---|
IOException |
if this method is invoked. |
也可以看看:
long skip (long n)
跳过并丢弃来自此输入流的n
个字节的数据。 由于各种原因, skip
方法可能会跳过一些较小的字节数,可能为零。 如果n
为负数,则不跳过字节。
该skip
方法的PushbackInputStream
超过在推回缓冲区中的字节第一跳过,如果有的话。 然后,如果需要跳过更多字节,它会调用底层输入流的skip
方法。 返回跳过的实际字节数。
Parameters | |
---|---|
n |
long : |
Returns | |
---|---|
long |
the actual number of bytes skipped. |
Throws | |
---|---|
IOException |
if the stream does not support seek, or the stream has been closed by invoking its close() method, or an I/O error occurs. |
也可以看看:
void unread (byte[] b, int off, int len)
通过将字节数组的一部分复制到推回缓冲区的前面来推回字节数组的一部分。 在此方法返回后,要读取的下一个字节将具有值b[off]
,之后的字节将具有值b[off+1]
,等等。
Parameters | |
---|---|
b |
byte : the byte array to push back. |
off |
int : the start offset of the data. |
len |
int : the number of bytes to push back. |
Throws | |
---|---|
IOException |
If there is not enough room in the pushback buffer for the specified number of bytes, or this input stream has been closed by invoking its close() method. |
void unread (int b)
通过将其复制到推回缓冲区的前面来推回一个字节。 此方法返回后,要读取的下一个字节将具有值(byte)b
。
Parameters | |
---|---|
b |
int : the int value whose low-order byte is to be pushed back. |
Throws | |
---|---|
IOException |
If there is not enough room in the pushback buffer for the byte, or this input stream has been closed by invoking its close() method. |
void unread (byte[] b)
通过将字节数组复制到推回缓冲区的前面来推回字节数组。 在此方法返回后,要读取的下一个字节将具有值b[0]
,之后的字节将具有值b[1]
,等等。
Parameters | |
---|---|
b |
byte : the byte array to push back |
Throws | |
---|---|
IOException |
If there is not enough room in the pushback buffer for the specified number of bytes, or this input stream has been closed by invoking its close() method. |