JavaTM 2 Platform
Standard Ed. 6

java.io
類別 StreamTokenizer

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

public class StreamTokenizer
extends Object

StreamTokenizer 類別獲取輸入串流並將其解析為“標記”,允許一次讀取一個標記。解析過程由一個表和許多可以設置為各種狀態的標誌控制。該串流的標記產生器可以識別標識符、數字、參考的字元串和各種註釋樣式。

從輸入串流讀取的每個位元組都被視為一個字元,範圍在 '\u0000''\u00FF' 之間。字元值用於尋找該字元的五個可能屬性:空白字母數字字元串引號註釋字元。每個字元都可以有零個或多個這樣的屬性。

另外,一個實例還有四個標誌。這些標誌指示:

典型的應用程序首先建構此類別的一個實例,建立一個語法表,然後重複循環,調用該循環的每個迭代中的 nextToken 方法,直到返回值 TT_EOF

從以下版本開始:
JDK1.0
另請參見:
nextToken(), TT_EOF

欄位摘要
 double nval
          如果當前標記是一個數字,則此欄位將包含該數字的值。
 String sval
          如果當前標記是一個文字標記,則此欄位包含一個給出該文字標記的字元的字元串。
static int TT_EOF
          指示已讀到串流末尾的常數。
static int TT_EOL
          指示已讀到行末尾的常數。
static int TT_NUMBER
          指示已讀到一個數字標記的常數。
static int TT_WORD
          指示已讀到一個文字標記的常數。
 int ttype
          在調用 nextToken 方法之後,此欄位將包含剛讀取的標記的型別。
 
建構子摘要
StreamTokenizer(InputStream is)
          已過時。 從 JDK 版本 1.1 開始,標記輸入串流的首選方法是將其轉換為一個字元串流,例如:
   Reader r = new BufferedReader(new InputStreamReader(is));
   StreamTokenizer st = new StreamTokenizer(r);
 
StreamTokenizer(Reader r)
          創建解析給定字元串流的標記產生器。
 
方法摘要
 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()
          重置此標記產生器的語法表,使所有字元都成為“普通”字元。
 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 都是文字成分。
 
從類別 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

欄位詳細資訊

ttype

public int ttype
在調用 nextToken 方法之後,此欄位將包含剛讀取的標記的型別。對於單個字元標記,其值是轉換為一個整數的單一字元。對於參考的字元串標記,其值是引號字元。否則,其值是下列值之一:

此欄位的初始值為 -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);
 

創建一個解析指定輸入串流的串流標記產生器。該串流標記產生器初始化為以下預設狀態:

參數:
is - 輸入串流。
另請參見:
BufferedReader, InputStreamReader, StreamTokenizer(java.io.Reader)

StreamTokenizer

public StreamTokenizer(Reader r)
創建解析給定字元串流的標記產生器。

參數:
r - 提供輸入串流的 Reader 物件。
從以下版本開始:
JDK1.1
方法詳細資訊

resetSyntax

public void resetSyntax()
重置此標記產生器的語法表,使所有字元都成為“普通”字元。有關普通字元的更多資訊,請參閱 ordinaryChar 方法。

另請參見:
ordinaryChar(int)

wordChars

public void wordChars(int low,
                      int hi)
指定 low <= c <= high 範圍中的所有字元 c 都是文字成分。文字標記由一個文字成分後跟零或更多文字成分或數字成分組成。

參數:
low - 該範圍的低端。
hi - 該範圍的高端。

whitespaceChars

public void whitespaceChars(int low,
                            int hi)
指定 low <= c <= high 範圍中的所有字元 c 都是空白字元。空白字元僅用於分隔輸入串流中的標記。

指定範圍中字元串的任何其他屬性設置都被清除。

參數:
low - 該範圍的低端。
hi - 該範圍的高端。

ordinaryChars

public void ordinaryChars(int low,
                          int hi)
指定 low <= c <= high 範圍中的所有字元 c 在此標記產生器中都是“普通”字元。關於普通字元的更多資訊,請參見 ordinaryChar 方法。

參數:
low - 該範圍的低端。
hi - 該範圍的高端。
另請參見:
ordinaryChar(int)

ordinaryChar

public void ordinaryChar(int ch)
指定字元參數在此標記產生器中是“普通”字元。它可以移除該字元的任何特殊含意,如註釋字元、文字元素、字元串分隔符、空白或數字字元。在解析器遇到此類別字元時,解析器會將其視為單一字元標記,並將 ttype 欄位設置為該字元的值。

將行結束符字元變為“普通”字元會妨礙 StreamTokenizer 計算行數的能力。lineno 方法將不再能夠在其行計數中反映此類別結束符字元的存在。

參數:
ch - 字元。
另請參見:
ttype

commentChar

public void commentChar(int ch)
指定該字元參數啟動一個單行註釋。從註釋字元到行末尾的所有字元均被此串流標記產生器忽略。

指定字元的任何其他屬性設置均被清除。

參數:
ch - 字元。

quoteChar

public void quoteChar(int ch)
指定此字元的比對對分隔此標記產生器中的字元串常數。

nextToken 方法遇到一個字元串常數時,ttype 欄位將被設置為該字元串分隔符,sval 欄位被設置為此字元串的正文。

如果遇到字元串引號字元,則將識別一個字元串,該字元串包括字元串引號字元(不包括)到下一個相同的字元串引號字元(不包括)之間、或者到行結束符或檔案末尾的所有字元。常規的轉義序列(如 "\n""\t")將被識別,並在解析該字元串時轉換為單一字元。

指定字元的任何其他屬性設置均被清除。

參數:
ch - 字元。
另請參見:
nextToken(), sval, ttype

parseNumbers

public void parseNumbers()
指定此標記產生器應解析的數字。已修改此標記產生器的語法表,使以下十二個字元:
      0 1 2 3 4 5 6 7 8 9 . -
 

都具有“數字”屬性。

當解析器遇到具有雙精度浮點數字格式的文字標記時,會將該標記視為數字而不是文字,方法是通過將 ttype 欄位設置為值 TT_NUMBER,並將該標記的數字值放入 nval 欄位。

另請參見:
nval, TT_NUMBER, ttype

eolIsSignificant

public void eolIsSignificant(boolean flag)
確定是否將行末尾視為標記。如果該標誌參數為 true,則此標記產生器將行末尾視為標記;在讀到行末尾時,nextToken 方法返回 TT_EOL,還將 ttype 欄位設置為此值。

一行是一個字元序列,以回車(Enter)符 ('\r') 或者以新行符 ('\n') 結尾。另外,回車(Enter)符後面緊跟新行符被視為一個單行末尾標記。

如果此 flag 為 false,行末尾字元被視為空白並僅用作分隔標記。

參數:
flag - 為 true 指示行末尾字元為分隔標記;為 false 指示行末尾字元為空白。
另請參見:
nextToken(), ttype, TT_EOL

slashStarComments

public void slashStarComments(boolean flag)
確定標記產生器是否識別 C 樣式註釋。如果標誌參數為 true,此串流標記產生器識別 C 樣式註釋。後面出現的 /**/ 之間的所有文本將被丟棄。

如果此標誌參數為 false,則不特殊對待 C 樣式註釋。

參數:
flag - 為 true 指示識別並忽略 C 樣式註釋。

slashSlashComments

public void slashSlashComments(boolean flag)
確定標記產生器是否識別 C++ 樣式註釋。如果標誌參數為 true,此串流標記產生器識別 C++ 樣式註釋。任何出現的兩個連續斜線字元 ('/') 均被視為一個註釋的開始並一直延伸到行的末尾。

如果此標誌參數為 false,則不特殊對待 C++ 樣式註釋。

參數:
flag - 為 true 指示識別並忽略 C++ 樣式註釋。

lowerCaseMode

public void lowerCaseMode(boolean fl)
確定是否對文字標記自動使用小寫字母。如果此標誌參數為 true,則在此標記產生器的 nextToken 方法返回文字標記時(ttype 欄位具有值 TT_WORD),sval 欄位中的值為小寫字母。

如果此標誌參數為 false,則 sval 欄位未被修改。

參數:
fl - 為 true 指示所有文字標記應為小寫字母。
另請參見:
nextToken(), ttype, TT_WORD

nextToken

public int nextToken()
              throws IOException
從此標記產生器的輸入串流中解析下一個標記。下一個標記的型別在 ttype 欄位中返回。關於該標記的其他資訊可能位於此標記產生器的 nval 欄位或 sval 欄位中。

此類別的典型客戶機首先建立語法表,然後循環調用 nextToken 來解析後續標記,直到返回 TT_EOF。

返回:
ttype 欄位的值。
拋出:
IOException - 如果發生 I/O 錯誤。
另請參見:
nval, sval, ttype

pushBack

public void pushBack()
導致對此標記產生器的 nextToken 方法的下一個調用返回 ttype 欄位中的當前值,而不修改 nvalsval 欄位中的值。

另請參見:
nextToken(), nval, sval, ttype

lineno

public int lineno()
返回當前行號。

返回:
此串流標記產生器的當前行號。

toString

public String toString()
返回當前串流標記和在其上發生的行號的字元串表示形式。

未指定返回的精確字元串,但可以將以下範例視為典型範例:

Token['a'], line 10

覆寫:
類別 Object 中的 toString
返回:
此標記的字元串表示形式
另請參見:
nval, sval, ttype

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only