我是 Scala 的新手,对流关闭机制不熟悉。我写了一些这样的代码。
def loadResourceAsString(path: String) = {
val is = this.getClass().getResourceAsStream(path)
Source.fromInputStream(is).getLines().mkString("\n")
}
Run Code Online (Sandbox Code Playgroud)
我在 Scala 源代码中找到了这个。该Source会返回一个BufferedSource其覆盖close方法关闭输入流。
def fromInputStream(is: InputStream)(implicit codec: Codec): BufferedSource =
createBufferedSource(is, reset = () => fromInputStream(is)(codec), close = () => is.close())(codec)
Run Code Online (Sandbox Code Playgroud)
如果有异常,scala 会通过自己的机制执行close方法吗?
或者,我应该像 java 一样显式关闭finally块中的输入流吗?
| 归档时间: |
|
| 查看次数: |
3913 次 |
| 最近记录: |