私は scala の初心者で、ストリームを閉じるメカニズムに慣れていません。このようなコードを書きました。
def loadResourceAsString(path: String) = {
val is = this.getClass().getResourceAsStream(path)
Source.fromInputStream(is).getLines().mkString("\n")
}
これはscalaソースコードで見つけました。はSource
、入力ストリームを閉じるために close メソッドをオーバーライドする BufferedSource を返します。
def fromInputStream(is: InputStream)(implicit codec: Codec): BufferedSource =
createBufferedSource(is, reset = () => fromInputStream(is)(codec), close = () => is.close())(codec)
例外があった場合、scala は独自のメカニズムで close メソッドを実行しますか?
または、 java のように明示的にfinallyブロックで入力ストリームを閉じる必要がありますか?