【问题标题】:using BufferedReader in Java在 Java 中使用 BufferedReader
【发布时间】:2013-10-10 22:43:23
【问题描述】:

如何使用 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 初学者!

【问题讨论】:

  • 这个想法看起来不错。为您的 ide 使用调试器或输出 line1 以查看发生了什么。

标签: java


【解决方案1】:

按以下方式更改循环。您需要阅读条件中的行并检查它是否不是 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();
}

【讨论】:

  • 我试试这个,但是这个方法打印文件中的所有行,并且!不明白为什么?
  • 你想做什么。?
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    您可以尝试使用 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 值,但这样的事情可能对您有用。

    希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-22
      • 2011-11-17
      • 1970-01-01
      • 2011-07-22
      • 1970-01-01
      • 2015-05-10
      • 2015-10-06
      相关资源
      最近更新 更多