簡體   English   中英

如何從文件的行號n到行號m讀取行?

[英]How to read lines from line-number n to line-number m of a file?

有沒有辦法可以從文件中讀取行號n到行號m的行?

換句話說,我有一個包含10萬個條目的文件。 我想一次加載10k行,對其進行處理,然后加載下一個10k行,以便在有限的內存資源下運行。 有什么辦法可以做到這一點?

您不能從任意行開始閱讀,但這不是您在問題的第二部分中所說的。 如果可以保留整個過程的資源,那么您想要的是以下內容:

int batchSize = 10000;
try (BufferedReader br = Files.newBufferedReader(file.toPath())) {
    boolean eof = false;
    while (!eof) {
        List<String> batch = new ArrayList<>(batchSize);
        for (int i=0 ; i<batchSize ; i++) {
            String line = br.readLine();
            if (eof = line == null) break;
            batch.add(line);
        }
        processBatch(batch);
    }
}

如果你想盡快釋放資源,這可能是一個更好的主意,而消費者對它們進行處理,以便有一個生產者分裂文件由10萬行批次。 這可以通過兩個線程和一個BlockingQueue<File>輕松實現。

暫無
暫無

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

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