프로그래밍/Java
Java try-with-resources
김퇴근
2019. 8. 21. 15:22
반응형
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년인데..
고인물 고인물 해도 내가 진짜 고인물이었구나...
매일매일 조금씩 겸손해지고 있다.
반응형