所有类


java.io
类 StreamTokenizer

java.lang.Object
  继承者 java.io.StreamTokenizer

public class StreamTokenizer
   
   
   
   
   
extends Object

StreamTokenizer 类获取输入流并将其分析为“标记”,允许一次读取一个标记。分析过程由一个表和许多可以设置为各种状态的标志控制。该流的标记生成器可以识别标识符、数字、引用的字符串和各种注释样式。

从输入流读取的每个字节都被视为一个字符,范围在 '\u0000''\u00FF' 之间。字符值用于查找该字符的五个可能属性:空白字母数字字符串引号注释字符。每个字符都可以有零个或多个这样的属性。

另外,一个实例还有四个标志。这些标志指示:

  • 行结束符是作为标记返回,还是被视为仅用于分隔标记的空白。
  • 是标识还是跳过 C 样式注释。
  • 是标识还是跳过 C++ 样式注释。
  • 是否将标识符的字符转换为小写字母。

典型的应用程序首先构造此类的一个实例,建立一个语法表,然后重复循环,调用该循环的每个迭代中的 nextToken 方法,直到返回值 TT_EOF

从以下版本开始:
JDK1.0
另请参见:
nextToken(), TT_EOF

字段摘要
 doublenval
          如果当前标记是一个数字,则此字段将包含该数字的值。
 Stringsval
          如果当前标记是一个文字标记,则此字段包含一个给出该文字标记的字符的字符串。
static intTT_EOF
          指示已读到流末尾的常量。
static intTT_EOL
          指示已读到行末尾的常量。
static intTT_NUMBER
          指示已读到一个数字标记的常量。
static intTT_WORD
          指示已读到一个文字标记的常量。
 intttype
          在调用 nextToken 方法之后,此字段将包含刚读取的标记的类型。
 
构造方法摘要
StreamTokenizer(InputStream is)
          已过时。 从 JDK 版本 1.1 开始,标记输入流的首选方法是将其转换为一个字符流,例如:
   Reader r = new BufferedReader(new InputStreamReader(is));
   StreamTokenizer st = new StreamTokenizer(r);
 
StreamTokenizer(Reader r)
          创建分析给定字符流的标记生成器。
 
方法摘要
 voidcommentChar(int ch)
          指定该字符参数启动一个单行注释。
 voideolIsSignificant(boolean flag)
          确定是否将行末尾视为标记。
 intlineno()
          返回当前行号。
 voidlowerCaseMode(boolean fl)
          确定是否对文字标记自动使用小写字母。
 intnextToken()
          从此标记生成器的输入流中分析下一个标记。
 voidordinaryChar(int ch)
          指定字符参数在此标记生成器中是“普通”字符。
 voidordinaryChars(int low, int hi)
          指定 low <= c <= high 范围中的所有字符 c 在此标记生成器中都是“普通”字符。
 voidparseNumbers()
          指定此标记生成器应分析的数字。
 voidpushBack()
          导致对此标记生成器的 nextToken 方法的下一个调用返回 ttype 字段中的当前值,而不修改 nvalsval 字段中的值。
 voidquoteChar(int ch)
          指定此字符的匹配对分隔此标记生成器中的字符串常量。
 voidresetSyntax()
          重置此标记生成器的语法表,使所有字符都成为“普通”字符。
 voidslashSlashComments(boolean flag)
          确定标记生成器是否识别 C++ 样式注释。
 voidslashStarComments(boolean flag)
          确定标记生成器是否识别 C 样式注释。
 StringtoString()
          返回当前流标记和在其上发生的行号的字符串表示形式。
 voidwhitespaceChars(int low, int hi)
          指定 low <= c <= high 范围中的所有字符 c 都是空白字符。
 voidwordChars(int low, int hi)
          指定 low <= c <= high 范围中的所有字符 c 都是文字成分。
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

字段详细信息

ttype

public int ttype
在调用 nextToken 方法之后,此字段将包含刚读取的标记的类型。对于单个字符标记,其值是转换为一个整数的单一字符。对于引用的字符串标记,其值是引号字符。否则,其值是下列值之一:
  • TT_WORD 指示该标记是一个文字。
  • TT_NUMBER 指示该标记是一个数字。
  • TT_EOL 指示已读到行的末尾。如果已使用参数 true 调用 eolIsSignificant 方法,则该字段只能使用此值。
  • TT_EOF 指示已到达输入流的末尾。

此字段的初始值为 -4。

另请参见:
eolIsSignificant(boolean), nextToken(), quoteChar(int), TT_EOF, TT_EOL, TT_NUMBER, TT_WORD

TT_EOF

public static final int TT_EOF
指示已读到流末尾的常量。

另请参见:
常量字段值

TT_EOL

public static final int TT_EOL
指示已读到行末尾的常量。

另请参见:
常量字段值

TT_NUMBER

public static final int TT_NUMBER
指示已读到一个数字标记的常量。

另请参见:
常量字段值

TT_WORD

public static final int TT_WORD
指示已读到一个文字标记的常量。

另请参见:
常量字段值

sval

public String sval
如果当前标记是一个文字标记,则此字段包含一个给出该文字标记的字符的字符串。当前标记是一个引用的字符串标记时,此字段将包含该字符串的正文。

ttype 字段的值是 TT_WORD 时,当前标记将是一个文字。ttype 字段的值是一个引号字符时,当前标记将是一个引用的字符串标记。

此字段的初始值为 null。

另请参见:
quoteChar(int), TT_WORD, ttype

nval

public double nval
如果当前标记是一个数字,则此字段将包含该数字的值。ttype 字段的值是 TT_NUMBER 时,当前标记将是一个数字。

此字段的初始值为 0.0。

另请参见:
TT_NUMBER, ttype
构造方法详细信息

StreamTokenizer

@Deprecated
public StreamTokenizer(InputStream is)
已过时。 从 JDK 版本 1.1 开始,标记输入流的首选方法是将其转换为一个字符流,例如:
   Reader r = new BufferedReader(new InputStreamReader(is));
   StreamTokenizer st = new StreamTokenizer(r);
 

创建一个分析指定输入流的流标记生成器。该流标记生成器初始化为以下默认状态:
  • 'A''Z'、从 'a''z' 以及从 '\u00A0''\u00FF' 的所有字节值都被视为字母。
  • '\u0000''\u0020' 的所有字节值都被视为空白。
  • '/' 是注释字符。
  • 单引号 '\'' 和双引号 '"' 字符串引用字符。
  • 数字被分析。
  • 行的末尾被视为空白,而不视为分隔标记。
  • C 样式和 C++ 样式的注释不被识别。

参数:
is - 输入流。
另请参见:
BufferedReader, InputStreamReader, StreamTokenizer(java.io.Reader)