我不认为有任何“魔术”方法可以跳到文件中的任意“行”。行仅由换行符定义,因此,如果不实际读取文件,就无法知道行将在何处。我相信您有两种选择:
Java解决方案:
BufferedReader r = new BufferedReader(new FileReader(f));
String line;
for ( int ln = 0; (line = r.readLine()) != null && ln <= end; ln++ ) {
if ( ln >= start ) {
//Some code here
}
}
Gross, eh?
不幸的是,除非您的行是固定长度的,否则您将无法有效地跳到start第th行,因为每行都可能是任意长的,因此需要读取所有数据。但是,这并不排除更好的解决方案。
认为值得进行更新以显示如何使用Streams有效地做到这一点:
int start = 5;
int end = 12;
Path file = Paths.get("/tmp/bigfile.txt");
try (Stream<String> lines = Files.lines(file)) {
lines.skip(start).limit(end-start).forEach(System.out::println);
}
因为Streams是惰性计算的,所以它只会读取直到end(包括)的行(以及它选择执行的任何内部缓冲)。