StreamTokenizer 將 InputStream 切分為詞法單元:單字、數字、字串、單一字元。預設分隔符可擴充,適用於編譯器掃描器、文字統計等場景。
nextToken() 取得下一單元,回傳型別代碼 (TT_EOF, TT_EOL, TT_NUMBER, TT_WORD)ttype 欄位標識單元型別sval (字串值)、nval (數值) 儲存對應內容ordinaryChar() 將字元設為普通字元(不作為單字一部分)StreamTokenizer st = new StreamTokenizer(fileInputStream);
st.ordinaryChar('.'); st.ordinaryChar('-'); // 設定普通字元
while (st.nextToken() != StreamTokenizer.TT_EOF) {
String s;
switch (st.ttype) {
case StreamTokenizer.TT_WORD: s = st.sval; break;
case StreamTokenizer.TT_NUMBER: s = Double.toString(st.nval); break;
default: s = String.valueOf((char)st.ttype);
}
// 使用 Hashtable + Counter 統計頻率
}
// 使用 StrSortVector 排序輸出
第 17 章將展示更複雜的 StreamTokenizer 應用案例。