[英]How to get source file-name/line-number from a java.lang.Class object
[英]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.