java.lang.Object
java.io.InputStream
java.io.FilterInputStream
java.io.PushbackInputStream
- 所有已实现的接口:
Closeable,AutoCloseable
PushbackInputStream 将功能添加到另一个输入流,即通过将推回的字节存储在内部缓冲区中来“推回”或“未读”字节的能力。这在代码片段可以方便地读取由特定字节值分隔的无限数量的数据字节的情况下很有用;读取终止字节后,代码片段可以“取消读取”它,以便输入流上的下一个读取操作将重新读取被推回的字节。例如,表示构成标识符的字符的字节可能由表示运算符字符的字节终止;一个只读取标识符的方法可以读取直到它看到运算符,然后将运算符推回以重新读取。
- 自从:
- 1.0
-
字段摘要
字段在类 java.io.FilterInputStream 中声明的字段
in -
构造方法总结
构造方法构造方法描述创建一个带有 1 字节推送缓冲区的PushbackInputStream,并保存其参数,即输入流in,供以后使用。PushbackInputStream(InputStream in, int size) 创建一个带有指定size的回推缓冲区的PushbackInputStream,并保存其参数,即输入流in,供以后使用。 -
方法总结
修饰符和类型方法描述int返回可以从此输入流中读取(或跳过)的字节数的估计值,而不会被下一次为此输入流的方法调用阻塞。voidclose()关闭此输入流并释放与该流关联的所有系统资源。voidmark(int readlimit) 标记此输入流中的当前位置。boolean测试此输入流是否支持mark和reset方法,但它不支持。intread()从此输入流中读取下一个字节的数据。intread(byte[] b, int off, int len) 从此输入流中读取最多len字节的数据到字节数组中。voidreset()将此流重新定位到上次对此输入流调用mark方法时的位置。longskip(long n) 跳过并丢弃此输入流中的n字节数据。voidunread(byte[] b) 通过将字节数组复制到推回缓冲区的前面来推回字节数组。voidunread(byte[] b, int off, int len) 通过将字节数组的一部分复制到回推缓冲区的前面来将其推回。voidunread(int b) 通过将字节复制到推回缓冲区的前面来推回一个字节。在类 java.io.FilterInputStream 中声明的方法
read在类 java.io.InputStream 中声明的方法
nullInputStream, readAllBytes, readNBytes, readNBytes, skipNBytes, transferTo
-
字段详细信息
-
buf
protected byte[] buf推回缓冲区。- 自从:
- 1.1
-
pos
protected int pos将读取下一个字节的回推缓冲区中的位置。当缓冲区为空时,pos等于buf.length;当缓冲区已满时,pos等于零。- 自从:
- 1.1
-
-
构造方法详细信息
-
PushbackInputStream
创建一个带有指定size的回推缓冲区的PushbackInputStream,并保存其参数,即输入流in,供以后使用。最初,推回缓冲区是空的。- 参数:
in- 将从中读取字节的输入流。size- 推回缓冲区的大小。- 抛出:
IllegalArgumentException- 如果size <= 0- 自从:
- 1.1
-
PushbackInputStream
创建一个带有 1 字节推送缓冲区的PushbackInputStream,并保存其参数,即输入流in,供以后使用。最初,推回缓冲区是空的。- 参数:
in- 将从中读取字节的输入流。
-
-
方法详情
-
read
从此输入流中读取下一个字节的数据。值字节作为int在0到255范围内返回。如果因为已到达流的末尾而没有可用字节,则返回值-1。此方法会阻塞,直到输入数据可用、检测到流结束或抛出异常为止。此方法返回最近推回的字节(如果有的话),否则调用其基础输入流的
read方法并返回该方法返回的任何值。- 重写:
read在类FilterInputStream中- 返回:
-
下一个字节的数据,或者
-1如果已经到达流的末尾。 - 抛出:
IOException- 如果此输入流已通过调用其close()方法关闭,或者发生 I/O 错误。- 参见:
-
read
从此输入流中读取最多len字节的数据到字节数组中。此方法首先读取任何推回的字节;之后,如果读取的字节少于len字节,那么它会从底层输入流中读取。如果len不为零,则该方法会阻塞,直到至少有 1 个字节的输入可用;否则,不读取任何字节并返回0。- 重写:
read在类FilterInputStream中- 参数:
b- 读取数据的缓冲区。off- 目标数组中的起始偏移量blen- 读取的最大字节数。- 返回:
-
读入缓冲区的字节总数,如果因为已到达流的末尾而没有更多数据,则为
-1。 - 抛出:
NullPointerException- 如果b是null。IndexOutOfBoundsException- 如果off为负,len为负,或者len大于b.length - offIOException- 如果此输入流已通过调用其close()方法关闭,或者发生 I/O 错误。- 参见:
-
unread
通过将字节复制到推回缓冲区的前面来推回一个字节。此方法返回后,要读取的下一个字节的值为(byte)b。- 参数:
b- 其低位字节要被推回的int值。- 抛出:
IOException- 如果字节的回送缓冲区没有足够的空间,或者此输入流已通过调用其close()方法关闭。
-
unread
通过将字节数组的一部分复制到回推缓冲区的前面来将其推回。此方法返回后,要读取的下一个字节的值为b[off],之后的字节的值为b[off+1],依此类推。- 参数:
b- 要推回的字节数组。off- 数据的起始偏移量。len- 要推回的字节数。- 抛出:
NullPointerException- 如果b是null。IOException- 如果回送缓冲区中没有足够的空间容纳指定的字节数,或者此输入流已通过调用其close()方法关闭。- 自从:
- 1.1
-
unread
通过将字节数组复制到推回缓冲区的前面来推回字节数组。此方法返回后,要读取的下一个字节的值为b[0],之后的字节的值为b[1],依此类推。- 参数:
b- 要推回的字节数组- 抛出:
NullPointerException- 如果b是null。IOException- 如果回送缓冲区中没有足够的空间容纳指定的字节数,或者此输入流已通过调用其close()方法关闭。- 自从:
- 1.1
-
available
返回可以从此输入流中读取(或跳过)的字节数的估计值,而不会被下一次为此输入流的方法调用阻塞。下一次调用可能是同一个线程或另一个线程。单次读取或跳过这么多字节不会阻塞,但可能会读取或跳过更少的字节。该方法返回已推回的字节数与
available返回值的总和。- 重写:
available在类FilterInputStream中- 返回:
- 可以在不阻塞的情况下从输入流中读取(或跳过)的字节数。
- 抛出:
IOException- 如果此输入流已通过调用其close()方法关闭,或者发生 I/O 错误。- 参见:
-
skip
跳过并丢弃此输入流中的n字节数据。由于各种原因,skip方法可能最终会跳过一些较小的字节数,可能为零。如果n为负,则不会跳过任何字节。PushbackInputStream的skip方法首先跳过 pushback 缓冲区中的字节,如果有的话。如果需要跳过更多字节,它会调用底层输入流的skip方法。返回实际跳过的字节数。- 重写:
skip在类FilterInputStream中- 参数:
n- 要跳过的字节数。- 返回:
- 实际跳过的字节数。
- 抛出:
IOException- 如果流已通过调用其close()方法关闭,in.skip(n)将抛出 IOException,或发生 I/O 错误。- 自从:
- 1.2
- 参见:
-
markSupported
public boolean markSupported()测试此输入流是否支持mark和reset方法,但它不支持。- 重写:
markSupported在类FilterInputStream中- 返回:
false,因为此类不支持mark和reset方法。- 参见:
-
mark
public void mark(int readlimit) 标记此输入流中的当前位置。PushbackInputStream的mark方法什么都不做。- 重写:
mark在类FilterInputStream中- 参数:
readlimit- 在标记位置变为无效之前可以读取的最大字节数限制。- 参见:
-
reset
将此流重新定位到上次对此输入流调用mark方法时的位置。类
PushbackInputStream的方法reset除了抛出一个IOException之外什么都不做。- 重写:
reset在类FilterInputStream中- 抛出:
IOException- 如果调用此方法。- 参见:
-
close
关闭此输入流并释放与该流关联的所有系统资源。流关闭后,进一步的 read()、unread()、available()、reset() 或 skip() 调用将抛出 IOException。关闭之前关闭的流没有任何效果。- 指定者:
close在接口AutoCloseable中- 指定者:
close在接口Closeable中- 重写:
close在类FilterInputStream中- 抛出:
IOException- 如果发生 I/O 错误。- 参见:
-