📜  Java IO-PushbackReader类(1)

📅  最后修改于: 2023-12-03 15:31:30.918000             🧑  作者: Mango

Java IO-PushbackReader类

Java IO-PushbackReader类提供了一种在读取字符流时能够将之前读取的字符放回到流中的方法。这个类比较小,但是它可以非常方便地解析语言,例如,解析XML或JSON等格式的数据。

构造函数

PushbackReader类有两种构造函数

  1. PushbackReader(Reader reader)

    构造一个可用字符读取器读取char输入流的PushbackReader。

  2. PushbackReader(Reader reader, int size)

    构造具有大小的可用字符读取器读取char输入流的PushbackReader。

方法

PushbackReader类有以下3个主要方法:

  1. void close()

    用于关闭此流并释放与该流关联的所有系统资源。

  2. int read()

    用于读取下一个字符。

  3. void unread(char[] cbuf)

    用于把给定的字符数组(参数)推回字符流中。

示例

以下示例演示了如何使用PushbackReader类来将字符串中的序列识别为Java关键字。

import java.io.*;
import java.util.Arrays;

public class PushbackReaderDemo {
   public static void main(String[] args) throws IOException {
       
      String inputString = "String int double public";
      PushbackReader reader = new PushbackReader(new StringReader(inputString));
      StringBuilder builder = new StringBuilder();
      
      int ch;
      while ((ch = reader.read()) != -1) {
         
         if (Character.isWhitespace((char)ch)) {
            
            String word = builder.toString();
            
            // 检查单词是否是Java关键字
            if (Arrays.asList("String", "int", "double", "public").contains(word)) {
               System.out.printf("'%s' 是一个Java关键字。\n", word);
            }
            
            builder = new StringBuilder();

         } else {
            builder.append((char)ch);
         }

      }
      
      reader.close();
   }
}

以上代码的输出结果是:

'String' 是一个Java关键字。
'int' 是一个Java关键字。
'double' 是一个Java关键字。
'public' 是一个Java关键字。
总结

PushbackReader类允许在读取字符流时能够将之前读取的字符放回到流中,这使得解析语言变得更加轻松和高效。但是,PushbackReader类仅适用于文本文件,不适用于二进制文件。