在用 Java 读取非常大的文件(GB 级)时,我确切地知道我需要处理哪些行。但是,我不知道每行的大小,它们可能不同。
我的问题如下:
你有跳过无用行的有效方法吗?我的(天真的)方法包括读取行而不是处理它,但这听起来像是在浪费时间和内存空间。
我正在寻找的代码可能如下所示:
SortedMap goodLineNumbers = ......
Int currentLineNumber = 1;
try(BufferedReader br = new BufferedReader(new FileReader(tracefile))) {
do{
if(goodLineNumbers.containsKey(currentLineNumber)) {
line = br.readLine();
// process line
} else {
line = EfficientSkip(br); // don't know the size of the line
}
currentLineNumber++;
}
while(line != null);
} catch (IOException e) {
e.printStackTrace();
}
最佳答案
如果您不希望 BufferedReader 为您不需要的行创建字符串,请按字符读取输入,按 EOL 计算行数,并在您位于所需行的开头时使用 BufferedReader.readLilne()。不过,我不确定它是否会提高整体性能。
关于java - 是否可以在 Java 中有效地跳过未知大小的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27442210/