如何使用bufferedReader读取特定行

时间:2017-12-19 07:05:03

标签: java

我需要从txt文件中找到一些特定数据,请参阅下面的代码。

while ((line = bufferedReader.readLine())!= null) {
    //pokial obsahuje string zapíš do array
    if (line.toLowerCase().contains("list c.")) {
        parsedData.add(line);
    }
    if(line.toLowerCase().startsWith("re")) {
        parsedData.add(line);//add found data to array
        //i need to access and save second and third line after this one
    }

    System.out.println(line);
}

在第二种情况下,当我找到一条以" re"我需要在这个特定的一行之后保存第二行和第三行。

2 个答案:

答案 0 :(得分:1)

从你的问题我不确定,但如果你的目标是在接收到线路开始后接下来几行(例如2),你可以通过一些标志来做到这一点。

 boolean needsToConsider = false;
        int countOfLines = 2; 
        while ((line = bufferedReader.readLine())!= null) {

            if(needsToConsider && countOfLines > 0){
                // add here
                countOfLines--;
                if(countOfLines == 0)
                    needsToConsider = false;
            }
            //pokial obsahuje string zapíš do array
            if (line.toLowerCase().contains("list c.")) {
                parsedData.add(line);
            }
            if(line.toLowerCase().startsWith("re")) {
                parsedData.add(line);//add found data to array
                //i need to access and save second and third line after this one
                needsToConsider = true;
            }

答案 1 :(得分:0)

这里一个简单的方法可能是使用计数器来跟踪击中第二和第三行:

int counter = 0;

while ((line = bufferedReader.readLine())!= null) {
    if (line.toLowerCase().contains("list c.")) {
        parsedData.add(line);
    }
    else if (line.toLowerCase().startsWith("re")) {
        parsedData.add(line);
        counter = 2;
    }
    else if (counter > 0) {
        // add second and third lines after "re" here
        parsedData.add(line);
        --counter;
    }
}

更高级的方法可能是读取感兴趣的文本的整个部分,然后使用正则表达式匹配器来提取您想要的内容。