我正在阅读java BufferedReader
中的文字,如下所示:
Stream.continually(reader.readLine).takeWhile {
case null => reader.close; false
case _ => true
}
这有效,但对我来说似乎有些笨拙。我希望在.whenDone
上有类似Stream
的内容,这样我就可以告诉它在整个内容被消耗后关闭读者,然后只做.takeWhile(_ != null)
。
有什么方法可以做到这一点我不知道吗?或者,也许是从java Reader
获取行流的更好方法(如果它是InputStream
,我可以做Source.fromInputStream
例如,但似乎没有是Reader
的等价物...注意,这只会部分地解决问题,因为人们可能想要与其他"可关闭的对象 - {{1}做同样的事情例如)?
答案 0 :(得分:1)
您可以通过附加另一个Stream
来获得def closeStream: Stream[Nothing] = {
reader.close
Stream.Empty
}
Stream.continually(reader.readLine).takeWhile(_ != null) #::: closeStream
行为。
这使代码更具表现力,也可用于其他情况。这是一些东西,但我猜远非完美。
{{1}}