📜  Java中的 PushbackReader unread() 方法和示例(1)

📅  最后修改于: 2023-12-03 14:42:51.432000             🧑  作者: Mango

Java中的 PushbackReader unread() 方法和示例

在Java中,PushbackReader是一个实现了BufferedReader类的过滤器类,它允许将字符推回输入流中,并允许重新读取前面读取的字符。unread()方法就是用于将字符推回输入流中的方法。

PushbackReader unread() 方法

以下是PushbackReader类的unread()方法的语法:

public void unread(char[] cbuf, int off, int len) throws IOException

参数说明:

  • cbuf:字符数组,包含要推回输入流的字符序列。

  • off:要推回字符序列的第一个字符的索引。

  • len:要推回字符序列的长度。

抛出异常:

  • IOException

该方法用于将字符数组的一部分推回输入流中。读取者在下一次读取时返回这些字符。

示例

请看下面的示例,展示了如何使用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中的使用方法和示例。