반응형
FileOutputStream
을 쓸 일이 생겼다. 다른 분이 만들어 놓은 유틸 클래스가 있어서 가져다 쓰려고 봤는데, 언뜻 보니 close()
가 없었다.
우선 내가 알던 고전적인 코드는 다음과 같이 작성한다.
FileOutputStream fos = null;
try {
fos = new FileOutputStream(file);
fos.write(mFile.getBytes());
} catch (IOException e) {
e.printStackTrace();
} finally {
if (fos != null) {
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
자원을 사용했으면 반드시 close()를 호출한다고 배웠다.
그런데 그 분이 작성하신 코드는 아래와 이렇다.
try (FileOutputStream fos = new FileOutputStream(file)){
fos.write(mFile.getBytes());
} catch (IOException e) {
e.printStackTrace();
}
아니, close가 없다니?!
근데 지금 보니까 try - catch가 어딘가 좀 낯설다. try에 원래 인자가 들어갔던가?
사실 이건 try-with-resources
라고 부르는 문법이다. 무려 Java7에 추가된 문법
인데 여태 몰랐다. 지금이 2019년인데..
고인물 고인물 해도 내가 진짜 고인물이었구나...
매일매일 조금씩 겸손해지고 있다.
반응형
'프로그래밍 > Java' 카테고리의 다른 글
맥/MacOS - CannotGetJdbcConnectionException 로케일을 인식할 수 없습니다 (0) | 2020.07.01 |
---|---|
List<?>를 사이즈별 List<List<?>> 로 나누기 (Lists.partition) (0) | 2020.05.11 |
Spring Boot, 파일 업로드 용량 설정 (0) | 2019.02.19 |
Tomcat + MySQL에서 [java.sql.SQLException: Already closed.] 발생 (0) | 2017.09.19 |
일반 뷰 Controller를 ajax로 데이터만 받아서 쓰기 (Interceptor 사용) (0) | 2017.08.18 |