r-6ren">
gpt4 book ai didi

scala - "close"一个流?

转载 作者:行者123 更新时间:2023-12-04 21:36:53 24 4
gpt4 key购买 nike

我正在从 Java 中读取文本 BufferedReader像这样:

Stream.continually(reader.readLine).takeWhile { 
case null => reader.close; false
case _ => true
}

这有效,但对我来说似乎有点笨拙。我希望有类似 .whenDone 的东西在 Stream ,这样我就可以告诉它在消耗完整个内容后关闭阅读器,然后执行 .takeWhile(_ != null) .

有什么我不知道的方法吗?或者,也许是从 java Reader 获取行流的更好方法(如果它是 InputStream ,我可以做 Source.fromInputStream 例如,但似乎没有等效的 Reader ......请注意,这只能部分解决问题,因为一个人可能想对其他“可关闭”对象做同样的事情 - 例如 ResultSet)?

最佳答案

您可以获得 .whenDone通过附加另一个 Stream 的行为.
这使代码更具表现力,也可以用于其他情况。这是一些东西,但我想远非完美。

def closeStream: Stream[Nothing] = {
reader.close
Stream.Empty
}

Stream.continually(reader.readLine).takeWhile(_ != null) #::: closeStream

关于scala - "close"一个流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35746539/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com