是否有一种方法可以解决BufferedReader读取的行数,而无需解决类似于Java的传统for循环?

以下面的代码为例:

bufferedReader.useLines { it }
            .take(10)
            .toList()
useLines的文档指出:



据我了解,这意味着将读取整个文件,然后才从序列中过滤掉前十个文件。除了只获取第一行之外,我找不到任何在线解决此问题的方法。

最佳答案

Sequence是一个延迟评估的集合。这意味着将仅处理必要的项目,因此,如果您使用take(10),则仅将处理前10行。

因此,文档中的关键字为:



现在,useLines在源代码块完成后立即关闭源代码,使您的代码不正确。而是使用以下命令:

val list : List<String> = bufferedReader
    .useLines { lines: Sequence<String> ->
        lines
            .take(10)
            .toList()
    }

08-18 17:46