新聞中心
StreamTokenizer

java.lang.Object
|---java.io.StreamTokenizer
public class StreamTokenizer
extends ObjectStreamTokenizer 類接受一個(gè)輸入流并將其解析為“令牌”,從而允許一次讀取一個(gè)令牌。 解析過程由一個(gè)表和許多可以設(shè)置為各種狀態(tài)的標(biāo)志控制。 流標(biāo)記器可以識別標(biāo)識符、數(shù)字、帶引號的字符串和各種注釋樣式。
從輸入流中讀取的每個(gè)字節(jié)都被視為 '\u0000' 到 '\u00FF' 范圍內(nèi)的一個(gè)字符。 字符值用于查找字符的五個(gè)可能屬性:空格、字母、數(shù)字、字符串引號和注釋字符。 每個(gè)字符可以有零個(gè)或多個(gè)這些屬性。
此外,一個(gè)實(shí)例有四個(gè)標(biāo)志。 這些標(biāo)志表明:
- 行終止符是作為標(biāo)記返回還是被視為僅分隔標(biāo)記的空白。
- 是否要識別和跳過 C 樣式的注釋。
- 是否要識別和跳過 C++ 樣式的注釋。
- 標(biāo)識符的字符是否轉(zhuǎn)換為小寫。
一個(gè)典型的應(yīng)用程序首先構(gòu)造這個(gè)類的一個(gè)實(shí)例,設(shè)置語法表,然后在循環(huán)的每次迭代中重復(fù)循環(huán)調(diào)用 nextToken 方法,直到它返回值 TT_EOF。
Since:
JDK1.0
字段摘要
| 修飾符和類型 | 字段 | 描述 |
|---|---|---|
| double | nval | 如果當(dāng)前標(biāo)記是數(shù)字,則此字段包含該數(shù)字的值。 |
| String | sval | 如果當(dāng)前標(biāo)記是單詞標(biāo)記,則此字段包含一個(gè)字符串,給出單詞標(biāo)記的字符。 |
| static int | TT_EOF | 一個(gè)常量,指示已讀取流的結(jié)尾。 |
| static int | TT_EOL | 一個(gè)常量,表示已讀取行尾。 |
| static int | TT_NUMBER | 表示已讀取數(shù)字標(biāo)記的常量。 |
| static int | TT_WORD | 一個(gè)常量,表示已讀取單詞標(biāo)記。 |
| int | ttype | 調(diào)用 nextToken 方法后,該字段包含剛剛讀取的令牌的類型。 |
構(gòu)造函數(shù)摘要
| 構(gòu)造函數(shù) | 描述 |
|---|---|
| StreamTokenizer(InputStream is) | 已棄用。 從 JDK 版本 1.1 開始,標(biāo)記輸入流的選擇方法是將其轉(zhuǎn)換為字符流。 |
| StreamTokenizer(Reader r) | 創(chuàng)建一個(gè)解析給定字符流的分詞器。 |
方法總結(jié)
| 修飾符和類型 | 方法 | 描述 |
|---|---|---|
| void | commentChar(int ch) | 指定字符參數(shù)開始一個(gè)單行注釋。 |
| void | eolIsSignificant(boolean flag) | 確定是否將行尾視為標(biāo)記。 |
| int | lineno() | 返回當(dāng)前行號。 |
| void | lowerCaseMode(boolean fl) | 確定單詞標(biāo)記是否自動(dòng)小寫。 |
| int | nextToken() | 從此標(biāo)記器的輸入流中解析下一個(gè)標(biāo)記。 |
| void | ordinaryChar(int ch) | 指定字符參數(shù)在此標(biāo)記器中是“普通的”。 |
| void | ordinaryChars(int low, int hi) | 指定范圍 low <= c <= high 中的所有字符 c 在此標(biāo)記器中都是“普通的”。 |
| void | parseNumbers() | 指定應(yīng)由此標(biāo)記器解析數(shù)字。 |
| void | pushBack() | 導(dǎo)致對該標(biāo)記器的 nextToken 方法的下一次調(diào)用返回 ttype 字段中的當(dāng)前值,而不是修改 nval 或 sval 字段中的值。 |
| void | quoteChar(int ch) | 指定此字符的匹配對分隔此標(biāo)記器中的字符串常量。 |
| void | resetSyntax() | 重置此標(biāo)記器的語法表,以便所有字符都是“普通的”。 |
| void | slashSlashComments(boolean flag) | 確定標(biāo)記器是否識別 C++ 樣式的注釋。 |
| void | slashStarComments(boolean flag) | 確定分詞器是否識別 C 風(fēng)格的注釋。 |
| String | toString() | 返回當(dāng)前流標(biāo)記的字符串表示形式和它出現(xiàn)的行號。 |
| void | whitespaceChars(int low, int hi) | 指定范圍 low <= c <= high 的所有字符 c 都是空白字符。 |
| void | wordChars(int low, int hi) | 指定 low <= c <= high 范圍內(nèi)的所有字符 c 都是單詞組成部分。 |
| 從類 java.lang.Object 繼承的方法 |
|---|
| clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
字段詳細(xì)信息
TT_EOF
public static final int TT_EOF
一個(gè)常量,指示已讀取流的結(jié)尾。
TT_EOL
public static final int TT_EOL
一個(gè)常量,表示已讀取行尾。
TT_NUMBER
public static final int TT_NUMBER
表示已讀取數(shù)字標(biāo)記的常量。
TT_WORD
public static final int TT_WORD
一個(gè)常量,表示已讀取單詞標(biāo)記。
nval
public double nval
如果當(dāng)前標(biāo)記是數(shù)字,則此字段包含該數(shù)字的值。 當(dāng) ttype 字段的值為 TT_NUMBER 時(shí),當(dāng)前標(biāo)記是一個(gè)數(shù)字。
該字段的初始值為 0.0。
sval
public String sval
如果當(dāng)前標(biāo)記是單詞標(biāo)記,則此字段包含一個(gè)字符串,給出單詞標(biāo)記的字符。 當(dāng)前標(biāo)記是帶引號的字符串標(biāo)記時(shí),此字段包含字符串的正文。
當(dāng) ttype 字段的值為 TT_WORD 時(shí),當(dāng)前標(biāo)記是一個(gè)單詞。 當(dāng) ttype 字段的值是引號字符時(shí),當(dāng)前標(biāo)記是帶引號的字符串標(biāo)記。
該字段的初始值為空。
ttype
public int ttype
調(diào)用 nextToken 方法后,該字段包含剛剛讀取的令牌的類型。 對于單個(gè)字符標(biāo)記,其值為單個(gè)字符,轉(zhuǎn)換為整數(shù)。 對于帶引號的字符串標(biāo)記,其值為引號字符。 否則,其值為以下之一:
- TT_WORD 表示標(biāo)記是一個(gè)詞。
- TT_NUMBER 表示令牌是一個(gè)數(shù)字。
- TT_EOL 表示已讀取行尾。 如果使用參數(shù) true 調(diào)用了 eolIsSignificant 方法,則該字段只能具有此值。
- TT_EOF 表示已到達(dá)輸入流的末尾。
該字段的初始值為-4。
構(gòu)造函數(shù)詳細(xì)信息
StreamTokenizer
@Deprecated public StreamTokenizer(InputStream is)
已棄用。 從 JDK 版本 1.1 開始,標(biāo)記輸入流的選擇方法是將其轉(zhuǎn)換為字符流,例如:
Reader r = new BufferedReader(new InputStreamReader(is));
StreamTokenizer st = new StreamTokenizer(r);創(chuàng)建解析指定輸入流的流標(biāo)記器。 流標(biāo)記器初始化為以下默認(rèn)狀態(tài):
- 所有字節(jié)值“A”到“Z”、“a”到“z”和“\u00A0”到“\u00FF”都被認(rèn)為是字母。
- 所有字節(jié)值 '\u0000' 到 '\u0020' 都被認(rèn)為是空白。
- '/' 是注釋字符。
- 單引號 ''' 和雙引號 '"' 是字符串引號字符。
- 解析數(shù)字。
- 行尾被視為空白,而不是單獨(dú)的標(biāo)記。
- 無法識別 C 樣式和 C++ 樣式的注釋。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| is | 一個(gè)輸入流。 |
StreamTokenizer
public StreamTokenizer(Reader r)
創(chuàng)建一個(gè)解析給定字符流的分詞器。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| r | 提供輸入流的 Reader 對象。 |
Since:
JDK1.1
方法詳情
resetSyntax
public void resetSyntax()
重置此標(biāo)記器的語法表,以便所有字符都是“普通的”。
wordChars
public void wordChars(int low, int hi)
指定 low <= c <= high 范圍內(nèi)的所有字符 c 都是單詞組成部分。 一個(gè)詞標(biāo)記由一個(gè)詞成分組成,后跟零個(gè)或多個(gè)詞成分或數(shù)字成分。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| low | 范圍的低端。 |
| hi | 范圍的高端。 |
whitespaceChars
public void whitespaceChars(int low, int hi)
指定范圍 low <= c <= high 的所有字符 c 都是空白字符。 空白字符僅用于分隔輸入流中的標(biāo)記。
指定范圍內(nèi)字符的任何其他屬性設(shè)置都將被清除。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| low | 范圍的低端。 |
| hi | 范圍的高端。 |
ordinaryChars
public void ordinaryChars(int low, int hi)
指定范圍 low <= c <= high 中的所有字符 c 在此標(biāo)記器中都是“普通的”。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| low | 范圍的低端。 |
| hi | 范圍的高端。 |
ordinaryChar
public void ordinaryChar(int ch)
指定字符參數(shù)在此標(biāo)記器中是“普通的”。 它刪除了字符作為注釋字符、單詞組件、字符串分隔符、空格或數(shù)字字符的任何特殊意義。 當(dāng)解析器遇到這樣的字符時(shí),解析器將其視為單字符標(biāo)記并將 ttype 字段設(shè)置為字符值。
將行終止符設(shè)置為“普通”可能會干擾 StreamTokenizer 計(jì)算行數(shù)的能力。 lineno 方法可能不再在其行數(shù)中反映此類終止符的存在。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| ch | 字符。 |
commentChar
public void commentChar(int ch)
指定字符參數(shù)開始一個(gè)單行注釋。 此流標(biāo)記器忽略從注釋字符到行尾的所有字符。
指定字符的任何其他屬性設(shè)置都將被清除。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| ch | 字符。 |
quoteChar
public void quoteChar(int ch)
指定此字符的匹配對分隔此標(biāo)記器中的字符串常量。
當(dāng) nextToken 方法遇到字符串常量時(shí),ttype 字段設(shè)置為字符串分隔符,sval 字段設(shè)置為字符串正文。
如果遇到字符串引號字符,則識別字符串,該字符串由字符串引號字符之后(但不包括)直到(但不包括)相同字符串引號字符或行終止符的下一次出現(xiàn)為止的所有字符組成 ,或文件結(jié)尾。 在解析字符串時(shí),常見的轉(zhuǎn)義序列(例如“\n”和“\t”)會被識別并轉(zhuǎn)換為單個(gè)字符。
指定字符的任何其他屬性設(shè)置都將被清除。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| ch | 字符。 |
parseNumbers
public void parseNumbers()
指定應(yīng)由此標(biāo)記器解析數(shù)字。 此標(biāo)記器的語法表已修改,以便十二個(gè)字符中的每一個(gè):
0 1 2 3 4 5 6 7 8 9 . - 具有“數(shù)字”屬性。
當(dāng)解析器遇到具有雙精度浮點(diǎn)數(shù)格式的單詞標(biāo)記時(shí),它會將標(biāo)記視為數(shù)字而不是單詞,方法是將 ttype 字段設(shè)置為值 TT_NUMBER 并將標(biāo)記的數(shù)值放入 nval 字段。
eolIsSignificant
public void eolIsSignificant(boolean flag)
確定是否將行尾視為標(biāo)記。 如果 flag 參數(shù)為 true,則此標(biāo)記器將行尾視為標(biāo)記; nextToken 方法返回 TT_EOL 并在讀取行尾時(shí)將 ttype 字段設(shè)置為此值。
行是以回車符 ('\r') 或換行符 ('\n') 結(jié)尾的字符序列。 此外,緊跟換行符的回車符被視為單個(gè)行尾標(biāo)記。
如果標(biāo)志為 false,則行尾字符被視為空格并僅用于分隔標(biāo)記。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| flag | true 表示行尾字符是單獨(dú)的標(biāo)記; false 表示行尾字符是空格。 |
slashStarComments
public void slashStarComments(boolean flag)
確定分詞器是否識別 C 風(fēng)格的注釋。 如果 flag 參數(shù)為 true,則此流標(biāo)記器識別 C 樣式注釋。 連續(xù)出現(xiàn) / 和 / 之間的所有文本都將被丟棄。
如果 flag 參數(shù)為 false,則不會對 C 樣式注釋進(jìn)行特殊處理。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| flag | true 表示識別和忽略 C 風(fēng)格的注釋。 |
slashSlashComments
public void slashSlashComments(boolean flag)
確定標(biāo)記器是否識別 C++ 樣式的注釋。 如果 flag 參數(shù)為真,則此流標(biāo)記器識別 C++ 樣式的注釋。 任何出現(xiàn)的兩個(gè)連續(xù)斜杠字符 ('/') 都被視為延伸到行尾的注釋的開頭。
如果 flag 參數(shù)為 false,則不會對 C++ 樣式的注釋進(jìn)行特殊處理。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| flag | true 表示識別和忽略 C++ 風(fēng)格的注釋。 |
lowerCaseMode
public void lowerCaseMode(boolean fl)
確定單詞標(biāo)記是否自動(dòng)小寫。 如果 flag 參數(shù)為真,則每當(dāng)返回單詞標(biāo)記時(shí),sval 字段中的值都會小寫(通過此標(biāo)記器的 nextToken 方法,ttype 字段的值為 TT_WORD。
如果 flag 參數(shù)為 false,則不修改 sval 字段。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| fl | true 表示所有單詞標(biāo)記都應(yīng)該小寫。 |
nextToken
public int nextToken() throws IOException
從此標(biāo)記器的輸入流中解析下一個(gè)標(biāo)記。 下一個(gè)標(biāo)記的類型在 ttype 字段中返回。 有關(guān)令牌的其他信息可能在此標(biāo)記器的 nval 字段或 sval 字段中。
此類的典型客戶端首先設(shè)置語法表,然后坐在循環(huán)中調(diào)用 nextToken 來解析連續(xù)的令牌,直到返回 TT_EOF。
返回:
ttype 字段的值。
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| IOException | 如果發(fā)生 I/O 錯(cuò)誤。 |
pushBack
public void pushBack()
導(dǎo)致對該標(biāo)記器的 nextToken 方法的下一次調(diào)用返回 ttype 字段中的當(dāng)前值,而不是修改 nval 或 sval 字段中的值。
lineno
public int lineno()
返回當(dāng)前行號。
返回:
此流標(biāo)記器的當(dāng)前行號。
toString
public String toString()
返回當(dāng)前流標(biāo)記的字符串表示形式和它出現(xiàn)的行號。
返回的精確字符串是未指定的,盡管以下示例可以被認(rèn)為是典型的:
Token['a'], line 10覆蓋:
類 Object 中的 toString
返回:
令牌的字符串表示
文章標(biāo)題:創(chuàng)新互聯(lián)鴻蒙OS教程:鴻蒙OSStreamTokenizer
本文地址:http://www.dlmjj.cn/article/djiihho.html


咨詢
建站咨詢
