Most visited

Recently visited

Added in API level 1

StreamTokenizer

public class StreamTokenizer
extends Object

java.lang.Object
   ↳ java.io.StreamTokenizer


StreamTokenizer类获取输入流并将其解析为“标记”,从而允许一次读取一个标记。 解析过程由一个表格和一些可以设置为各种状态的标志控制。 流标记器可以识别标识符,数字,带引号的字符串和各种评论样式。

从输入流中读取的每个字节都被认为是'\u0000''\u00FF'一个字符。 字符值用于查找字符的五种可能属性: 空格字母数字字符串引号注释字符 每个字符可以有零个或多个这些属性。

另外,一个实例有四个标志。 这些标志表明:

典型的应用程序首先构造这个类的实例,设置语法表,然后在循环的每次迭代中重复循环调用 nextToken方法,直到它返回值 TT_EOF

也可以看看:

Summary

Constants

int TT_EOF

一个常数,表示流的结尾已被读取。

int TT_EOL

指示行已经被读取的常量。

int TT_NUMBER

表示已读取数字令牌的常量。

int TT_WORD

表示已读取单词标记的常量。

Fields

public double nval

如果当前令牌是一个数字,则该字段包含该数字的值。

public String sval

如果当前令牌是一个单词令牌,则该字段包含一个字符串,用于给出单词令牌的字符。

public int ttype

在调用 nextToken方法之后,此字段包含刚才读取的令牌的类型。

Public constructors

StreamTokenizer(InputStream is)

此构造函数在API级别1中已弃用。从JDK版本1.1开始,标记输入流的首选方法是将其转换为字符流,例如:


   Reader r = new BufferedReader(new InputStreamReader(is));
   StreamTokenizer st = new StreamTokenizer(r);
 

StreamTokenizer(Reader r)

创建一个分析给定字符流的标记器。

Public methods

void commentChar(int ch)

指定字符参数开始单行注释。

void eolIsSignificant(boolean flag)

确定行结束是否被视为记号。

int lineno()

返回当前行号。

void lowerCaseMode(boolean fl)

确定是否自动缩小字词标记。

int nextToken()

解析来自该标记器输入流的下一个标记。

void ordinaryChar(int ch)

指定该标记器中的字符参数为“普通”。

void ordinaryChars(int low, int hi)

指定在此标记器中,范围 low <= c <= high中的所有字符 c都是“普通”。

void parseNumbers()

指定该标记器应解析数字。

void pushBack()

导致对该标记器的 nextToken方法的下一次调用返回 ttype字段中的当前值,而不是修改 nvalsval字段中的值。

void quoteChar(int ch)

指定在此标记器中匹配此字符对的分隔符字符串常量。

void resetSyntax()

重置此标记器的语法表,以便所有字符都是“普通”。 有关普通字符的更多信息,请参阅ordinaryChar方法。

void slashSlashComments(boolean flag)

确定标记器是否识别C ++样式的注释。

void slashStarComments(boolean flag)

确定标记器是否识别C样式注释。

String toString()

返回当前流令牌的字符串表示形式以及它发生的行号。

void whitespaceChars(int low, int hi)

指定范围 low <= c <= high中的所有字符 c都是空格字符。

void wordChars(int low, int hi)

指定范围 low <= c <= high中的所有字符 c都是单词组成部分。

Inherited methods

From class java.lang.Object

Constants

TT_EOF

Added in API level 1
int TT_EOF

一个常数,表示流的结尾已被读取。

常量值:-1(0xffffffff)

TT_EOL

Added in API level 1
int TT_EOL

指示行已经被读取的常量。

常量值:10(0x0000000a)

TT_NUMBER

Added in API level 1
int TT_NUMBER

表示已读取数字令牌的常量。

常量值:-2(0xfffffffe)

TT_WORD

Added in API level 1
int TT_WORD

表示已读取单词标记的常量。

常量值:-3(0xfffffffd)

Fields

nval

Added in API level 1
double nval

如果当前令牌是一个数字,则该字段包含该数字的值。 ttype字段的值为TT_NUMBER时,当前令牌是一个数字。

该字段的初始值是0.0。

也可以看看:

sval

Added in API level 1
String sval

如果当前令牌是一个单词令牌,则该字段包含一个字符串,用于给出单词令牌的字符。 当前标记是带引号的字符串标记时,此字段包含字符串的正文。

ttype字段的值为TT_WORD时,当前令牌是一个字。 ttype字段的值是引号字符时,当前令牌是带引号的字符串标记。

该字段的初始值为空。

也可以看看:

ttype

Added in API level 1
int ttype

在调用nextToken方法之后,此字段包含刚才读取的令牌的类型。 对于单个字符标记,其值是单个字符,转换为整数。 对于带引号的字符串标记,其值是引号字符。 否则,其值是以下值之一:

  • TT_WORD indicates that the token is a word.
  • TT_NUMBER indicates that the token is a number.
  • TT_EOL indicates that the end of line has been read. The field can only have this value if the eolIsSignificant method has been called with the argument true.
  • TT_EOF indicates that the end of the input stream has been reached.

该字段的初始值是-4。

也可以看看:

Public constructors

StreamTokenizer

Added in API level 1
StreamTokenizer (InputStream is)

此构造函数在API级别1中已弃用。
从JDK 1.1版开始,标记输入流的首选方法是将其转换为字符流,例如:

   Reader r = new BufferedReader(new InputStreamReader(is));
   StreamTokenizer st = new StreamTokenizer(r);
 

创建解析指定输入流的流标记器。 流标记器被初始化为以下默认状态:

  • All byte values 'A' through 'Z', 'a' through 'z', and '\u00A0' through '\u00FF' are considered to be alphabetic.
  • All byte values '\u0000' through '\u0020' are considered to be white space.
  • '/' is a comment character.
  • Single quote '\'' and double quote '"' are string quote characters.
  • Numbers are parsed.
  • Ends of lines are treated as white space, not as separate tokens.
  • C-style and C++-style comments are not recognized.

Parameters
is InputStream: an input stream.

也可以看看:

StreamTokenizer

Added in API level 1
StreamTokenizer (Reader r)

创建一个分析给定字符流的标记器。

Parameters
r Reader: a Reader object providing the input stream.

Public methods

commentChar

Added in API level 1
void commentChar (int ch)

指定字符参数开始单行注释。 此流标记器将忽略注释字符到行尾的所有字符。

清除指定字符的任何其他属性设置。

Parameters
ch int: the character.

eolIsSignificant

Added in API level 1
void eolIsSignificant (boolean flag)

确定行结束是否被视为记号。 如果flag参数为true,则此标记器将行尾作为标记; nextToken方法返回TT_EOL并在读取行尾时将ttype字段设置为此值。

一行是以回车符( '\r' )或换行符( '\n' )结尾的'\n'字符。 另外,紧跟一个换行符后面的回车符被视为一个单行结束符。

如果 flag为false,则行尾字符将被视为空白并仅用于分隔令牌。

Parameters
flag boolean: true indicates that end-of-line characters are separate tokens; false indicates that end-of-line characters are white space.

也可以看看:

lineno

Added in API level 1
int lineno ()

返回当前行号。

Returns
int the current line number of this stream tokenizer.

lowerCaseMode

Added in API level 1
void lowerCaseMode (boolean fl)

确定是否自动缩小字词标记。 如果标志参数是true ,然后在该值sval每当返回一个字令牌字段被小写(该ttype字段具有值TT_WORDnextToken此标记生成器的方法。

如果标志参数是 false ,那么 sval字段不会被修改。

Parameters
fl boolean: true indicates that all word tokens should be lowercased.

也可以看看:

nextToken

Added in API level 1
int nextToken ()

解析来自该标记器输入流的下一个标记。 下一个标记的类型将返回到ttype字段中。 有关令牌的其他信息可能位于此标记器的nval字段或sval字段中。

此类的典型客户端首先设置语法表,然后坐在循环中调用nextToken来解析连续的标记,直到返回TT_EOF。

Returns
int the value of the ttype field.
Throws
IOException if an I/O error occurs.

也可以看看:

ordinaryChar

Added in API level 1
void ordinaryChar (int ch)

指定该标记器中的字符参数为“普通”。 它消除了字符作为注释字符,单词组件,字符串分隔符,空格或数字字符具有的任何特殊意义。 当解析器遇到这样的字符时,解析器将其视为单字符标记并将字段值设置为ttype

制作行结束符“普通”可能会干扰StreamTokenizer对行数进行计数的能力。 lineno方法可能不再反映其行计数中存在此类终止符字符。

Parameters
ch int: the character.

也可以看看:

ordinaryChars

Added in API level 1
void ordinaryChars (int low, 
                int hi)

指定在此标记器中,范围low <= c <= high中的所有字符c都是“普通”。 有关普通字符的更多信息,请参阅ordinaryChar方法。

Parameters
low int: the low end of the range.
hi int: the high end of the range.

也可以看看:

parseNumbers

Added in API level 1
void parseNumbers ()

指定该标记器应解析数字。 该标记器的语法表被修改,以便每个十二个字符:

      0 1 2 3 4 5 6 7 8 9 . -
 

具有“数字”属性。

当解析器遇到具有双精度浮点数字格式的单词标记时,它会将该标记视为数字而不是单词,方法是将 ttype字段设置为值 TT_NUMBER ,并将该标记的数字值放入 nval字段。

也可以看看:

pushBack

Added in API level 1
void pushBack ()

导致对该标记器的 nextToken方法的下一次调用返回 ttype字段中的当前值,而不是修改 nvalsval字段中的值。

也可以看看:

quoteChar

Added in API level 1
void quoteChar (int ch)

指定在此标记器中匹配此字符对的分隔符字符串常量。

nextToken方法遇到字符串常量时, ttype字段被设置为字符串分隔符,而 sval字段被设置为字符串的主体。

如果遇到字符串引号字符,则会识别一个字符串,其中包含字符串引号字符后的所有字符,直到(但不包括)该字符串引号字符的下一次出现或字符串终止符,或文件结尾。 通常的转义序列(如"\n""\t"被识别并在字符串解析时转换为单个字符。

清除指定字符的任何其他属性设置。

Parameters
ch int: the character.

也可以看看:

resetSyntax

Added in API level 1
void resetSyntax ()

重置此标记器的语法表,以便所有字符都是“普通”。 有关普通字符的更多信息,请参阅ordinaryChar方法。

也可以看看:

slashSlashComments

Added in API level 1
void slashSlashComments (boolean flag)

确定标记器是否识别C ++样式的注释。 如果flag参数是true ,则此流标记器可识别C ++样式的注释。 任何出现两个连续的斜线字符( '/' )都被视为延伸到行尾的注释的开始。

如果flag参数是 false ,那么C ++样式的注释不会被专门处理。

Parameters
flag boolean: true indicates to recognize and ignore C++-style comments.

slashStarComments

Added in API level 1
void slashStarComments (boolean flag)

确定标记器是否识别C样式注释。 如果标志参数为true ,则此流标记器可识别C风格的注释。 连续出现/**/之间的所有文本都将被丢弃。

如果标志参数是 false ,那么C样式注释不会被专门处理。

Parameters
flag boolean: true indicates to recognize and ignore C-style comments.

toString

Added in API level 1
String toString ()

返回当前流令牌的字符串表示形式以及它发生的行号。

返回的确切字符串未指定,但以下示例可以被认为是典型的:

Token['a'], line 10

Returns
String a string representation of the token

也可以看看:

whitespaceChars

Added in API level 1
void whitespaceChars (int low, 
                int hi)

指定范围low <= c <= high中的所有字符c都是空格字符。 空白字符仅用于在输入流中分离令牌。

清除指定范围内字符的任何其他属性设置。

Parameters
low int: the low end of the range.
hi int: the high end of the range.

wordChars

Added in API level 1
void wordChars (int low, 
                int hi)

指定范围low <= c <= high中的所有字符c都是单词组成部分。 一个单词标记由一个词组成,后面跟零个或多个单词组成或数字组成。

Parameters
low int: the low end of the range.
hi int: the high end of the range.

Hooray!