在Kotlin中相当于Files.lines()?

时间:2019-07-27 15:48:08

标签: kotlin

在Kotlin中是否有等效的Java Files.lines()?

我想转换的Java代码类似于

Stream<String> lines =
  Files.list(Paths.get(dir_in))
  .flatMap((Files::lines));

// do something with my stream

lines.close();

我对通过关闭Stream释放所有文件系统资源的能力感兴趣。

谢谢。

1 个答案:

答案 0 :(得分:0)

我会使用File#bufferedReader

它返回一个BufferedReader,您可以(a)在需要时关闭它,并且(b)使用BufferedReader#lines获取行流。

这是一些示例代码。

val buffer: BufferedReader = File("hi.txt").bufferedReader()
val stream: Stream<String> = buffer.lines()
stream.forEach { println(it) }
buffer.close()

您应该尽可能使用File#useLines函数,因为它会自动关闭蒸汽。