나는 스트림 스톱 메커니즘에 익숙하지 않은 스 카와 초보자입니다. 이런 코드를 작성했습니다.scala가 자동으로 InputStream을 닫을까요?
def loadResourceAsString(path: String) = {
val is = this.getClass().getResourceAsStream(path)
Source.fromInputStream(is).getLines().mkString("\n")
}
스칼라 소스 코드에서이를 발견했습니다. Source
은 Close 메서드를 오버라이드 (override) 한 BufferedSource를 돌려 주어 입력 스트림을 닫습니다.
def fromInputStream(is: InputStream)(implicit codec: Codec): BufferedSource =
createBufferedSource(is, reset =() => fromInputStream(is)(codec), close =() => is.close())(codec)
예외가있는 경우 자체 메커니즘으로 close 메소드를 실행하겠습니까?
아니면 입력 스트림을 닫아야합니까? 마침내 블록은 java와 똑같은 블록입니까?
리소스 관리에 일관된 솔루션이 필요한 경우 [scala-arm] (http://jsuereth.com/scala-arm/)도 참조하십시오. –