Sto riscontrando questo bizzarro problema: lo stesso codice produce risultati diversi in Native Java che in Android.Comportamento imprevisto di StreamTokenizer in Android
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());
Dato il seguente InputStream (leggere da un file)
(;FF[4]CA[UTF-8]
nativo Java stampa i
Token['('], line 1
Token[';'], line 1
Token[FF], line 1
Token['['], line 1
52
Token[']'], line 1
Token[CA], line 1
come previsto. Ma in Android ho ottenuto:
Token['('], line 1
Token[';'], line 1
Token[FF], line 1
Token['['], line 1
93
Token[n=4.0], line 1
Token[CA], line 1
Perché si comporta in modo diverso in Android Java? In Android, in qualche modo, il carattere ']' viene estratto dallo stream prima che il tokenizzatore arrivi. Ho letto documenti Java e documenti Android e quelle classi sembrano essere identiche.
Il mio livello API è impostato su 7. E ho provato sia su Android 2.1 Emulator che su Android 4.0 Emulator ottenendo lo stesso risultato. Ho anche provato a eseguirlo su un dispositivo reale e ho ottenuto lo stesso risultato.