📅  最后修改于: 2023-12-03 14:42:51.432000             🧑  作者: Mango
在Java中,PushbackReader是一个实现了BufferedReader类的过滤器类,它允许将字符推回输入流中,并允许重新读取前面读取的字符。unread()方法就是用于将字符推回输入流中的方法。
以下是PushbackReader类的unread()方法的语法:
public void unread(char[] cbuf, int off, int len) throws IOException
参数说明:
cbuf:字符数组,包含要推回输入流的字符序列。
off:要推回字符序列的第一个字符的索引。
len:要推回字符序列的长度。
抛出异常:
该方法用于将字符数组的一部分推回输入流中。读取者在下一次读取时返回这些字符。
请看下面的示例,展示了如何使用PushbackReader unread()方法:
import java.io.*;
public class PushbackReaderDemo {
public static void main(String[] args) {
String s = "abcdefghijklmnopqrstuvwxyz";
char[] buf = new char[4];
try (PushbackReader pr = new PushbackReader(new StringReader(s))) {
int len;
while ((len = pr.read(buf)) > 0) {
System.out.print(new String(buf, 0, len));
if (len < buf.length) {
break;
} else if (buf[3] == 'd'){
pr.unread(buf);
} else {
pr.unread(buf, 1, 3);
}
buf = new char[4];
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
上述示例中,我们创建了一个StringReader,将字符串“abcdefghijklmnopqrstuvwxyz”传递给它。我们使用PushbackReader将其封装,并读取其内容。在读取过程中,我们使用unread()方法将一些字符推回输入流。
该示例输出如下:
abcdhijklmnopqrstuvwxyz
在读取字符序列“efgh”时,我们使用unread()方法将其推回输入流中。字符序列“abcd”被重新读取和输出。
这是因为我们使用unread(char[] cbuf)方法,它向输入流中推回整个字符数组。然后,在读取下一个字符序列时,我们再次读取“abcd”字符序列并将其输出。
所以,这就是PushbackReader unread()方法在Java中的使用方法和示例。