📜  Java.io.StreamTokenizer类(1)

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

Java.io.StreamTokenizer类

Java.io.StreamTokenizer类是Java编程语言中一个强大的工具,它可以把输入流分割成一系列单独的标记(token),标记可以有不同的类型,例如数字、字符串、运算符等。在读取输入流的过程中,我们可以根据不同的标记类型做出不同的处理,从而完成功能的设计。

用途

Java.io.StreamTokenizer类适用于以下场景:

  • 处理简单的文本格式。当我们需要读取一个文本文件,并对其中的数据进行处理时,StreamTokenizer可以让我们轻松地获取文件中的不同数据项,在数据项之间做出适当的处理。

  • 实现简单的计算器功能。当我们需要对一个数学表达式进行求值时,可以使用StreamTokenizer从输入中获取数据项,并根据运算符的优先级和结合性进行求值,最终得到运算结果。

  • 处理简单的配置文件。当我们需要读取一个配置文件,并对其中的配置项进行解析时,StreamTokenizer可以帮助我们快速获取配置项的值。

使用方法

Java.io.StreamTokenizer类的使用方法相对简单,主要包括以下步骤:

  1. 创建一个InputStreamReader对象,使用它来读取输入流。
InputStream inputStream = new FileInputStream(file);
InputStreamReader reader = new InputStreamReader(inputStream);
  1. 创建一个StreamTokenizer对象,使用它来处理输入流。
StreamTokenizer tokenizer = new StreamTokenizer(reader);
  1. 设置或修改StreamTokenizer的各种属性,例如是否把数字视为标记。
tokenizer.resetSyntax();
tokenizer.wordChars('a', 'z');
tokenizer.wordChars('A', 'Z');
tokenizer.ordinaryChar('.');
tokenizer.parseNumbers();
  1. 通过调用nextToken()方法获取下一个标记。
int tokenType = tokenizer.nextToken();
while (tokenType != StreamTokenizer.TT_EOF) {
    if (tokenType == StreamTokenizer.TT_WORD) {
        String word = tokenizer.sval;
        System.out.println("Word: " + word);
    } else if (tokenType == StreamTokenizer.TT_NUMBER) {
        double number = tokenizer.nval;
        System.out.println("Number: " + number);
    } else {
        char ch = (char) tokenizer.ttype;
        System.out.println("Delimiter: " + ch);
    }
    tokenType = tokenizer.nextToken();
}
注意事项

在使用Java.io.StreamTokenizer类时,需要注意以下几点:

  • StreamTokenizer默认使用空格、制表符、换行符等作为标记的分隔符。如果需要修改分隔符,可以调用resetSyntax()方法。

  • StreamTokenizer默认把数字视为普通字符串,如果需要把数字作为标记,可以调用parseNumbers()方法。

  • StreamTokenizer返回的标记类型有三种,分别是TT_WORD、TT_NUMBER和TT_EOF。TT_WORD表示普通字符串,TT_NUMBER表示数字,TT_EOF表示输入流结束。