可能是因为line.containes()缺少Android中的搜索词吗?

时间:2012-01-12 07:40:35

标签: java android

我写的文本解析器发生了一些奇怪的事情我想也许你的专家可以找到我做错了什么。

解析器正在文本中搜索多个搜索词,并将找到的结果复制到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出现在原始文本中,但不会被代码欺骗。我尝试在目标android machin上使用Eclipse踩代码,我可以清楚地看到“line”包含SerchTermB但是调试器忽略了这个IF语句并继续下一个IF语句。

可能是line.containes()缺少搜索词吗?

请帮助我找到我做错的事情,因为这会阻止我在晚上睡觉......

谢谢,

1 个答案:

答案 0 :(得分:2)

您的while循环一次读取两行......

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

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

换句话说,您在readLine()声明中致电while,以检查它是否为null结果,然后您立即再次致电readLine()

摆脱这个......

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

......看看会发生什么。