2012-03-03 5 views
37

내 코드는 다음과 같습니다 문서에서Java에서 InputStream을 닫아야합니까?

InputStream confFile=classLoader.getResourceAsStream("myconffile.properties"); 

:

의 InputStream의 close 메소드는 아무것도하지 않습니다.

가까운 InputStream이 필요하지 않다는 의미입니까?

답변

25

언급 한 메서드에서 반환 한 스트림이 실제로 파일의 핸들을 포함하는 FileInputStream 또는 InputStream의 다른 하위 클래스이기 때문에 입력 스트림을 닫아야합니다. 이 스트림을 닫지 않으면 리소스가 누출됩니다.

+1

대부분의 경우 FileInputStream이 될 것이라고 생각하지 않습니다. –

+0

나는 유감스럽게도 현재 자바 인스턴스가 없다고 조사해야한다. 그러나, 나는 그것이 파일 핸들을 잡고 있다는 것에 동의한다. –

+0

finalize() 메서드가 리소스 스트림을 닫지 않습니까? –

19

아니요, InputStream이 추상 클래스이기 때문에 getResourceAsStream()close() 메서드가 수행하는 구체적인 하위 클래스를 반환합니다. 가장 중요한 것은 파일 핸들을 해제하는 것입니다.

관련 문제