【问题标题】:use bufferedreader on a txt file twice?在txt文件上使用bufferedreader两次?
【发布时间】:2016-06-20 07:00:57
【问题描述】:

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

【问题讨论】:

标签: java file bufferedreader


【解决方案1】:
  1. 同时打印和计数?
  2. 将行移到数组中然后打印?
  3. 确保在重新打开之前已关闭文件?

【讨论】:

    【解决方案2】:

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

        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();
        }
    }
    

    【讨论】:

      【解决方案3】:

      您可以使用BufferedReadermark()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 支持标记,但并非所有 Readers 都支持。可以使用markSupported()查看。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-04-07
        • 2018-08-04
        • 1970-01-01
        • 2021-11-20
        • 2013-07-11
        • 1970-01-01
        • 2012-05-30
        • 1970-01-01
        相关资源
        最近更新 更多