"关闭"流?

  • 本文关键字:关闭 scala io stream
  • 更新时间 :
  • 英文 :


我正在从java BufferedReader读取文本,如下所示:

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

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

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

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

def closeStream: Stream[Nothing] = {
  reader.close
  Stream.Empty
}
Stream.continually(reader.readLine).takeWhile(_ != null) #::: closeStream

相关内容

  • 没有找到相关文章

最新更新