📅  最后修改于: 2023-12-03 15:16:02.501000             🧑  作者: Mango
Java.io.PushbackInputStream类是Java I/O包中提供的用于从输入流中读取数据的一个类。它允许你回退到输入流的前一个位置并重新读取相同的数据。
创建一个PushbackInputStream对象,使用给定的InputStream。
创建一个PushbackInputStream对象,使用给定的InputStream和推回缓冲区的大小。
从输入流中读取一个字节,并在推回缓冲区中存储先前读取的字节。如果推回缓冲区已满,则抛出IOException。
从输入流中读取一定量的字节,存储在指定的字节数组中并在推回缓冲区中存储以前读取的字节。返回读取的字节数。
将指定的字节推回输入流中。
将指定数组中从偏移量off开始的len个字节推回到输入流中。
返回此输入流是否支持mark()方法,PushbackInputStream类返回false。
InputStream inputStream = new FileInputStream("path/to/file.txt");
PushbackInputStream pushbackInputStream = new PushbackInputStream(inputStream, 8);
byte[] buffer = new byte[8];
while (pushbackInputStream.read(buffer) != -1) {
if (buffer[0] == 'H' && buffer[1] == 'e' && buffer[2] == 'l' && buffer[3] == 'l'
&& buffer[4] == 'o' && buffer[5] == ' ' && buffer[6] == 'W' && buffer[7] == 'o') {
pushbackInputStream.unread(buffer);
System.out.println("Found the word in the input stream!");
break;
} else {
System.out.println(new String(buffer));
pushbackInputStream.unread(buffer);
}
}
在上方的示例中,我们首先创建一个PushbackInputStream对象,并给定一个缓冲区的大小为8个字节,然后从文件中以块的方式读取数据。
如果缓冲区中的字节序列为“Hello Wo”,则将该字节序列推回输入流,然后输出“Found the word in the input stream!”。否则,推回缓冲区的字节序列将继续循环用于下一个块。