2012-01-12 1 views
1

내가 쓰고있는 텍스트 파서에 이상한 일이 생겼다. 전문가가 내가 잘못하고있는 것을 찾을 수 있을지도 모른다.안드로이드에서 line.containes()에 검색 용어가 누락 되었습니까?

파서가 텍스트의 여러 검색어를 검색하고 발견 된 결과를 SD 카드의 출력 구문 분석 된 파일에 복사합니다.

코드는 다음과 같습니다

String line; // line reading buffer 
… 

Process process = Runtime.getRuntime().exec(commandLine.toArray(new String[0])); 

     BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream())); 

… 

while ((line = bufferedReader.readLine()) != null){ 

      line = bufferedReader.readLine(); // reading the buffer 

      /*** parsing the buffer line by line ***/ 


       if (line.contains("SearchTermA")){ 
        // parsing the text in this line 
       } 

       if (line.contains("SearchTermB")){ 
        // parsing the text in this line 
       } 


       // Check that we got to a cretin part in the file 
       if (line.contains("SearchTerm_text")){ 
        textID = 1;  
       } 

       if (textID == 1){ 
        if (line.contains("SearchTermC")){ 
         // parsing the text in this line 
                } 
       } 

이제 문제는 파일의 시작 부분에 (파일이 매우 긴)이 확인을 작동하지만 때로는이다 방식 SearchTermB은 원래 텍스트로 표시되지만 함께 코드에 의해 deceted되지 않습니다. 나는 이클립스로 타겟 안드로이드 machin에 코드를 밟아 보았고 나는 분명히 "라인"이 SerchTermB를 포함하고 있지만 디버거는이 IF 문을 무시하고 다음 IF 문을 계속 볼 수있다.

line.containes()에 검색어가 누락 되었습니까?

이 밤에 잠에서 저를 방지하기 때문에 내가 ... 잘못하고있는 무슨 찾는 도와주세요 ..

감사합니다,

귀하의 while 루프가 한 번에 두 줄을 읽고

답변

2

...

당신이이 null 결과 아니라고 확인하기 위해 귀하의 while 성명에서 readLine()를 호출 한 다음 즉시 AG readLine()를 호출 즉
while ((line = bufferedReader.readLine()) != null){ 

    line = bufferedReader.readLine(); // reading the buffer 

아인.

는 ...이의

line = bufferedReader.readLine(); // reading the buffer 

을 제거 ... 그리고 무슨 일이 일어 나는지하기.

+0

고맙습니다. MisterSquonk. 뿐만 아니라이 문제를 해결할뿐만 아니라 추가 버그도 발견했습니다 ..... – Karako2017

+0

@Andi : 기꺼이 도와 드리겠습니다. 이전에 저도 똑같은 실수를 저 지르 셨습니다. :) – Squonk

관련 문제