-2

如何使用 BufferedReader 读取两条具体线之间的所有线。例如我想从 line1 到 line2 开始阅读,我可以使用这个代码吗

BufferedReader reader = new BufferedReader(new FileReader("file.txt"));
String line1 = "StartLine";
String line2 = "EndLine";
while (!line1.equals(line2))
{
  // do something
  line1 = reader.readLine();

}       

我写了这样的东西,但它不起作用!请帮助我,我是Java的初学者!

4

3 回答 3

2

按以下方式更改循环。您需要阅读条件中的行并检查它是否不是 nutll 即文件结尾。

String line1 = "StartLine";
String line2 = "EndLine";
String line3 = null;

 //Iterate upto line1
while( (line3 = reader.readLine()) != null && ! line3.equals(line1));

//Print the lines till line2
while(line3 != null && ! line3.equals(line2) ) {
     System.out.println(line3);
     line3 = reader.readLine();
}
于 2013-10-10T22:47:06.610 回答
0

您可以尝试使用 BufferReader 的markreset方法:

    BufferedReader reader = new BufferedReader(new FileReader("file.txt"));
    String line1 = "StartLine";
    String line2 = "EndLine";
    String line;
    while ((line = reader.readLine()) != null) {
        if (line1.equals(line)) {
            System.out.println(line);
            reader.mark(100);
        }
    }
    reader.reset();
    while ((line = reader.readLine()) != null) {
        if (line2.equals(line)) {
            break;
        } else {
            System.out.println(line); //or whatever you want to do
        }
    }

}

您可能必须mark使用价值,但这样的事情可能对您有用。

希望有帮助。

于 2013-10-11T03:40:35.647 回答
0

首先,您需要另一个循环来读取“StartLine”之前的所有行
,然后您需要更具体地了解哪些不工作。
您期望发生的事情和没有发生的事情

于 2013-10-10T22:45:29.090 回答