有没有一种方法可以解决BufferedReader读取的行数,而无需解决类似于Java的传统for循环?
以下面的代码为例:
bufferedReader.useLines { it }
.take(10)
.toList()
useLines
的文档说明:
调用[block]回调,为该文件中的所有行提供序列,并关闭阅读器一次 *处理完成。
据我了解,这意味着将读取整个文件,然后才从序列中过滤掉前十个文件。除了只获取第一行之外,我找不到任何在线解决此问题的方法。
答案 0 :(得分:5)
Sequence
是一个延迟评估的集合。这意味着将仅处理必要的项目,因此,如果您take(10)
,将仅处理前10行。
因此,文档中的关键字为:
调用[block]回调,为其中的所有行提供序列 此文件并在处理完成后关闭阅读器。
现在useLines
会在其源代码块完成后立即关闭源代码,从而使您的代码不正确。而是使用以下命令:
val list : List<String> = bufferedReader
.useLines { lines: Sequence<String> ->
lines
.take(10)
.toList()
}