📅  最后修改于: 2023-12-03 15:16:02.546000             🧑  作者: Mango
Java.io.StreamTokenizer类是Java编程语言中一个强大的工具,它可以把输入流分割成一系列单独的标记(token),标记可以有不同的类型,例如数字、字符串、运算符等。在读取输入流的过程中,我们可以根据不同的标记类型做出不同的处理,从而完成功能的设计。
Java.io.StreamTokenizer类适用于以下场景:
处理简单的文本格式。当我们需要读取一个文本文件,并对其中的数据进行处理时,StreamTokenizer可以让我们轻松地获取文件中的不同数据项,在数据项之间做出适当的处理。
实现简单的计算器功能。当我们需要对一个数学表达式进行求值时,可以使用StreamTokenizer从输入中获取数据项,并根据运算符的优先级和结合性进行求值,最终得到运算结果。
处理简单的配置文件。当我们需要读取一个配置文件,并对其中的配置项进行解析时,StreamTokenizer可以帮助我们快速获取配置项的值。
Java.io.StreamTokenizer类的使用方法相对简单,主要包括以下步骤:
InputStream inputStream = new FileInputStream(file);
InputStreamReader reader = new InputStreamReader(inputStream);
StreamTokenizer tokenizer = new StreamTokenizer(reader);
tokenizer.resetSyntax();
tokenizer.wordChars('a', 'z');
tokenizer.wordChars('A', 'Z');
tokenizer.ordinaryChar('.');
tokenizer.parseNumbers();
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表示输入流结束。