从 Kotlin 中的巨大文件中读取第一行
Read first line from huge File in Kotlin
我想阅读 kotlin 中 File
的第一行(也是唯一一行)。
文件本身很大,所以我想使用内存效率高的解决方案。
我想知道是否有比以下更好的解决方案:
File("huge.txt").bufferedReader().readLine()
您现在拥有的已经非常高效 - bufferedReader
将以小块的形式加载文件,直到读取一行。您应该确保 reader 已关闭,但是 - 像这样:
File("huge.txt").bufferedReader().use { it.readLine() }
如果您不需要速度,使用常规的无缓冲 reader 可能会为您节省一点内存,但不会太多。
您可以使用:
file.useLines { it.firstOrNull() }
或:
file.bufferedReader().use { it.readLine() }
两者都确保您实际上是在该行之后关闭 reader 并且同样有效。
如果您确定总是有第一行并且文件永远不会为空,您也可以使用 first()
代替或调用 it.readLine()!!
(这实际上取决于您是否分配了结果是否为可空类型)。
我想阅读 kotlin 中 File
的第一行(也是唯一一行)。
文件本身很大,所以我想使用内存效率高的解决方案。
我想知道是否有比以下更好的解决方案:
File("huge.txt").bufferedReader().readLine()
您现在拥有的已经非常高效 - bufferedReader
将以小块的形式加载文件,直到读取一行。您应该确保 reader 已关闭,但是 - 像这样:
File("huge.txt").bufferedReader().use { it.readLine() }
如果您不需要速度,使用常规的无缓冲 reader 可能会为您节省一点内存,但不会太多。
您可以使用:
file.useLines { it.firstOrNull() }
或:
file.bufferedReader().use { it.readLine() }
两者都确保您实际上是在该行之后关闭 reader 并且同样有效。
如果您确定总是有第一行并且文件永远不会为空,您也可以使用 first()
代替或调用 it.readLine()!!
(这实际上取决于您是否分配了结果是否为可空类型)。