是否有一种方法,不解决传统的类似Java的for循环,限制BufferedReader读取的行数?
以此代码为例:
bufferedReader.useLines { it }
.take(10)
.toList()
Run Code Online (Sandbox Code Playgroud)
useLines各州的文件:
调用[block]回调,为它提供此文件中所有行的序列,并在处理完成后关闭阅读器一次.
根据我的理解,这意味着将读取整个文件,然后才会从序列中过滤掉前十个文件.除了只获取第一行之外,我无法在网上找到解决此问题的任何内容.
Sequence是一个懒惰评估的集合.这意味着只处理必要的项目,因此如果您take(10)只处理前10行.
因此,文档中的关键字是:
调用[block]回调,为其提供此文件中所有行的序列,并在处理完成后关闭阅读器.
现在useLines,一旦块完成就关闭源代码,使代码不正确.相反,请使用以下内容:
val list : List<String> = bufferedReader
.useLines { lines: Sequence<String> ->
lines
.take(10)
.toList()
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
293 次 |
| 最近记录: |