Tôi đang gặp sự cố kỳ quái này: cùng một mã tạo ra các kết quả khác nhau trong Native Java so với Android.Hành vi StreamTokenizer không mong đợi trong 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());
Với InputStream sau (đọc từ một tập tin)
(;FF[4]CA[UTF-8]
Native Java in ra
Token['('], line 1
Token[';'], line 1
Token[FF], line 1
Token['['], line 1
52
Token[']'], line 1
Token[CA], line 1
như mong đợi. Nhưng trong Android tôi nhận được:
Token['('], line 1
Token[';'], line 1
Token[FF], line 1
Token['['], line 1
93
Token[n=4.0], line 1
Token[CA], line 1
Tại sao nó hoạt động khác trong Java Android? Trong Android, bằng cách nào đó, ký tự ']' được lấy ra từ luồng trước khi tokenizer đến đó. Tôi đã đọc tài liệu Java và tài liệu Android và các lớp đó dường như giống nhau.
Cấp API của tôi được đặt thành 7. Và tôi đã thử trên cả Trình giả lập Android 2.1 và Trình mô phỏng Android 4.0 nhận được kết quả tương tự. Tôi cũng đã thử chạy nó trên một thiết bị thực tế và tôi đã nhận được kết quả tương tự là tốt.