我是scala的新手,對流關閉機制並不熟悉。我寫了一些這樣的代碼。Scala會自動關閉InputStream嗎?
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?
如果您需要一個一致的資源管理解決方案,請參閱[scala-arm](http://jsuereth.com/scala-arm/) –