【发布时间】:2013-08-28 02:28:27
【问题描述】:
我是 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方法吗?
或者,我应该像 java 一样显式关闭 finally 块中的输入流吗?
【问题讨论】: