私はこの奇妙な問題に直面しています。同じコードは、AndroidよりもネイティブJavaで異なる結果をもたらします。Androidでの予期せぬStreamTokenizerの動作
InputStreamReader reader = new InputStreamReader(in, "UTF-8");
BufferedReader m_reader = new BufferedReader(reader);
StreamTokenizer m_tokenizer = new StreamTokenizer(m_reader);
m_tokenizer.nextToken();
System.out.println(m_tokenizer.toString());
m_tokenizer.nextToken();
System.out.println(m_tokenizer.toString());
m_tokenizer.nextToken();
System.out.println(m_tokenizer.toString());
m_tokenizer.nextToken();
System.out.println(m_tokenizer.toString());
int c = m_reader.read();
System.out.println(c);
m_tokenizer.nextToken();
System.out.println(m_tokenizer.toString());
m_tokenizer.nextToken();
System.out.println(m_tokenizer.toString());
を考えると、次のInputStream(ファイルから読み込み)予想通り
(;FF[4]CA[UTF-8]
ネイティブJavaは
Token['('], line 1
Token[';'], line 1
Token[FF], line 1
Token['['], line 1
52
Token[']'], line 1
Token[CA], line 1
を出力します。しかし、Androidで私は得た:
Token['('], line 1
Token[';'], line 1
Token[FF], line 1
Token['['], line 1
93
Token[n=4.0], line 1
Token[CA], line 1
なぜそれはAndroid Javaで動作が違うのですか? Androidでは、トークナイザーがそこに着く前に、何らかの形で文字 ']'がストリームから取り出されます。私はJavaのドキュメントとAndroidのドキュメントを読んでおり、それらのクラスは同じようです。
APIレベルが7に設定されています。Android 2.1エミュレータとAndroid 4.0エミュレータの両方で同じ結果が得られました。私はまた、実際のデバイスでそれを実行しようとしたと私は同様の結果を得た。