我是 scala 的新手,不熟悉流关闭机制。我写了一些这样的代码。
def loadResourceAsString(path: String) = {
val is = this.getClass().getResourceAsStream(path)
Source.fromInputStream(is).getLines().mkString("\n")
}
我在scala源代码中找到了这个。这Source
将返回一个 BufferedSource ,它重写 close 方法来关闭输入流。
def fromInputStream(is: InputStream)(implicit codec: Codec): BufferedSource =
createBufferedSource(is, reset = () => fromInputStream(is)(codec), close = () => is.close())(codec)
如果出现异常,scala会通过自己的机制执行close方法吗?
或者,我应该关闭输入流finally像java一样显式阻塞?
简而言之 - 不。createBufferedSource
创造BufferedSource
与给定的close
函数,但从不调用reset
不是为了close
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)