从Kotlin的巨大File中读取第一行

时间:2018-09-14 14:02:29

标签: file kotlin

我想从Kotlin的File中读取第一行(也是唯一的一行)。 文件本身很大,所以我想使用内存高效的解决方案。

我想知道是否有比以下更好的解决方案:

File("huge.txt").bufferedReader().readLine()

2 个答案:

答案 0 :(得分:5)

您可以使用:

file.useLines { it.firstOrNull() }

或:

file.bufferedReader().use { it.readLine() }

两者都确保您实际上在那一行之后关闭了读者,并且同样有效。

如果您确定始终有第一行并且文件永远不会为空,则也可以使用first()或调用it.readLine()!!(这实际上取决于您是否分配了结果)设置为可以为null的类型)。

答案 1 :(得分:4)

您现在所拥有的已经非常高效-bufferedReader将文件以小块的形式加载,直到读取一行为止。但是,您应该确保阅读器已关闭-像这样:

File("huge.txt").bufferedReader().use { it.readLine() }

如果您不需要速度,则使用常规的无缓冲读取器可能会为您节省一点内存,但不会太多。