이 이상한 문제가 발생합니다. 같은 코드가 Android보다 Native 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]
기본 자바
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에서 다르게 동작하는 이유는 무엇입니까? 안드로이드에서, 어떻게 든 문자 ']'가 토크 나이저에 도착하기 전에 스트림에서 꺼내집니다. 나는 자바 문서와 안드로이드 문서를 읽었고 그 클래스들은 동일하게 보인다.
내 API 레벨이 7로 설정되었습니다. Android 2.1 에뮬레이터와 Android 4.0 에뮬레이터에서 동일한 결과를 얻으려고했습니다. 또한 실제 장치에서 실행 해 보았습니다. 동일한 결과를 얻었습니다.