Kotlin - 只读取文件中的前n行

Ozi*_*ile 1 kotlin

是否有一种方法,不解决传统的类似Java的for循环,限制BufferedReader读取的行数?

以此代码为例:

bufferedReader.useLines { it }
            .take(10)
            .toList()
Run Code Online (Sandbox Code Playgroud)

useLines各州的文件:

调用[block]回调,为它提供此文件中所有行的序列,并在处理完成后关闭阅读器一次.

根据我的理解,这意味着将读取整个文件,然后才会从序列中过滤掉前十个文件.除了只获取第一行之外,我无法在网上找到解决此问题的任何内容.

nha*_*man 5

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)