认证0级讲师
가장 바깥쪽의 close()를 직접 호출하세요
업데이트:
http://docs.oracle.com/javase/8/docs/api/java/io/BufferedReader.html#close--
스트림을 닫고 이와 관련된 모든 시스템 리소스를 해제합니다
http://docs.oracle.com/javase/8/docs/api/java/io/InputStreamReader.html#close--
가장 바깥쪽이 닫히고, 가장 바깥쪽이 안쪽을 닫고, 안쪽이 안쪽을 닫는 체인입니다
물론, 셧다운이 실패할 수도 있다고 고집한다면 결국엔 어쩔 수 없겠죠
질문이 다음과 같은 경우: BufferedReader가 닫혀 있으면 InputStreamReader와 InputStream을 닫아야 합니까? 그렇다면 이 문제는 정상입니다...
Java io 패키지의 스트림과 리더는 모두 데코레이터 패턴을 사용합니다. 가장 바깥쪽 데코레이터의 close 메소드만 호출하면 되며, 데코레이션된 스트림이나 리더도 닫힙니다.
그래도 작동하지 않으면 BufferedReader의 소스 코드를 열고 close 메소드를 보면
BufferedReader
아무리 어려워도 다음 글을 추천합니다. "Java IO: Streams, 그리고 그 위에 데코레이터 패턴 적용"
모든 항목을 순서대로 하나씩 닫아야 합니다. 마지막으로 닫는 것이 좋습니다.
마지막 레벨이 먼저 생성되고, 첫 번째 레벨이 마지막에 생성됩니다
가장 바깥쪽의 close()를 직접 호출하세요
업데이트:
http://docs.oracle.com/javase/8/docs/api/java/io/BufferedReader.html#close--
http://docs.oracle.com/javase/8/docs/api/java/io/InputStreamReader.html#close--
가장 바깥쪽이 닫히고, 가장 바깥쪽이 안쪽을 닫고, 안쪽이 안쪽을 닫는 체인입니다
물론, 셧다운이 실패할 수도 있다고 고집한다면 결국엔 어쩔 수 없겠죠
질문이 다음과 같은 경우: BufferedReader가 닫혀 있으면 InputStreamReader와 InputStream을 닫아야 합니까? 그렇다면 이 문제는 정상입니다...
Java io 패키지의 스트림과 리더는 모두 데코레이터 패턴을 사용합니다. 가장 바깥쪽 데코레이터의 close 메소드만 호출하면 되며, 데코레이션된 스트림이나 리더도 닫힙니다.
그래도 작동하지 않으면
에서 장식한 리더가 닫히는 것을 볼 수 있습니다.BufferedReader
의 소스 코드를 열고 close 메소드를 보면아무리 어려워도 다음 글을 추천합니다. "Java IO: Streams, 그리고 그 위에 데코레이터 패턴 적용"
모든 항목을 순서대로 하나씩 닫아야 합니다. 마지막으로 닫는 것이 좋습니다.
으아악마지막 레벨이 먼저 생성되고, 첫 번째 레벨이 마지막에 생성됩니다