斯卡拉 – “关闭”一个流?
发布时间:2020-12-16 18:31:28 所属栏目:安全 来源:网络整理
导读:我正在从 java BufferedReader中读取文本,如下所示: Stream.continually(reader.readLine).takeWhile { case null = reader.close; false case _ = true} 这有效,但对我来说似乎有点笨拙.我希望在Stream上有类似.whenDone之类的内容,这样我就可以告诉它在整
我正在从
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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |