簡體   English   中英

兩次在txt文件上使用bufferedreader?

[英]use bufferedreader on a txt file twice?

我必須計算文件上的行數,但稍后在代碼中我也必須打印該文件中的內容,但是我不能使用讀取器兩次,它只能說為null。 如何在不創建一堆bufferedreader對象的情況下解決此問題? 謝謝

  1. 同時打印並計數?
  2. 將線移動到數組然后打印?
  3. 確保您已關閉文件然后再重新打開?

嘗試關閉緩沖區,然后再次重新打開它。

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

您可以使用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支持標記,但並非所有Reader都支持。 您可以使用markSupported()進行檢查。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM