Most visited

Recently visited

Added in API level 1

PushbackInputStream

public class PushbackInputStream
extends FilterInputStream

java.lang.Object
   ↳ java.io.InputStream
     ↳ java.io.FilterInputStream
       ↳ java.io.PushbackInputStream


PushbackInputStream为另一个输入流增加了功能,即能够“推回”或“未读”一个字节。 这对于一段代码便于读取由特定字节值分隔的无限数量的数据字节的情况很有用; 在读取终止字节后,代码片段可以“读取”它,以便输入流上的下一个读取操作将重新读取被推回的字节。 例如,表示构成标识符的字符的字节可以由表示操作符字符的字节终止; 一个只读取标识符的工作方法可以读取,直到它看到操作员,然后推回操作员重新读取。

Summary

Fields

protected byte[] buf

推回缓冲区。

protected int pos

推回缓冲区中将读取下一个字节的位置。

Inherited fields

From class java.io.FilterInputStream

Public constructors

PushbackInputStream(InputStream in, int size)

创建 PushbackInputStream具有指定的推回缓冲器 size ,并保存其参数,输入流 in ,供以后使用。

PushbackInputStream(InputStream in)

创建一个 PushbackInputStream并保存其参数,即输入流 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个字节的数据到一个字节数组中。

void reset()

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

long skip(long n)

跳过并丢弃来自此输入流的 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

Fields

buf

Added in API level 1
byte[] buf

推回缓冲区。

pos

Added in API level 1
int pos

推回缓冲区中将读取下一个字节的位置。 当缓冲区为空时, pos等于buf.length ; 当缓冲区满时, pos等于零。

Public constructors

PushbackInputStream

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

Added in API level 1
PushbackInputStream (InputStream in)

创建一个PushbackInputStream并保存其参数,即输入流in ,以备后用。 最初,没有后退字节(字段pushBack初始化为-1 )。

Parameters
in InputStream: the input stream from which bytes will be read.

Public methods

available

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

也可以看看:

close

Added in API level 1
void close ()

关闭此输入流并释放与该流关联的所有系统资源。 一旦流被关闭,进一步的read(),unread(),available(),reset()或skip()调用将引发IOException。 关闭以前关闭的流不起作用。

Throws
IOException if an I/O error occurs.

mark

Added in API level 1
void mark (int readlimit)

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

mark方法 PushbackInputStream什么都不做。

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方法,但不支持。

Returns
boolean false, since this class does not support the mark and reset methods.

也可以看看:

read

Added in API level 1
int read ()

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

也可以看看:

read

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

也可以看看:

reset

Added in API level 1
void reset ()

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

PushbackInputStream的方法 reset除了抛出 IOException之外什么也不 IOException

Throws
IOException if this method is invoked.

也可以看看:

skip

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

也可以看看:

unread

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

unread

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

unread

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

Hooray!