您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Groovy:从文件读取一系列行

Groovy:从文件读取一系列行

我不认为有任何“魔术”方法可以跳到文件中的任意“行”。行仅由换行符定义,因此,如果不实际读取文件,就无法知道行将在何处。我相信您有两种选择:

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(包括)的行(以及它选择执行的任何内部缓冲)。

其他 2022/1/1 18:14:55 有480人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶