在txt文件上使用bufferedreader两次?

时间:2016-03-06 19:49:52

标签: java file bufferedreader

我必须计算文件中的行,但后来在代码中我还必须打印该文件中的内容,但我不能使用读取器两次它只是说null。如何在不创建一堆bufferedreader对象的情况下解决这个问题? 感谢

3 个答案:

答案 0 :(得分:0)

  1. 同时打印并计数?
  2. 将线条移动到数组然后打印它们?
  3. 确保您在重新打开之前关闭了文件?

答案 1 :(得分:0)

尝试关闭缓冲区,然后重新打开它。

    BufferedReader bufferedReader = new BufferedReader(new FileReader("src/main/java/com/william/sandbox/stackoverflow/samples20160306/Demo.java"));
    String line = bufferedReader.readLine();
    int lineCount = 0;
    while(line != null){
        lineCount += 1;
        line = bufferedReader.readLine();
    }
    System.out.println("Line count is: " + lineCount);

    bufferedReader.close();
    bufferedReader = new BufferedReader(new FileReader("src/main/java/com/william/sandbox/stackoverflow/samples20160306/Demo.java"));

    line = bufferedReader.readLine();
    while(line != null){
        System.out.println(line);
        line = bufferedReader.readLine();
    }
}

答案 2 :(得分:-1)

您可以使用BufferedReader的{​​{1}}和mark()方法跳回特定位置。

reset()

请注意,try (BufferedReader r = new BufferedReader(new FileReader("somefile.txt"))) { // marks this position for the next 10 characters read // after that the mark is lost r.mark(10); // do some reading // jump back to the mark r.reset(); } 支持标记但不支持所有BufferedReader。您可以使用Reader进行检查。