기본 패턴
java
Path path = Path.of("notes.txt");
try (BufferedReader reader = Files.newBufferedReader(path)) {
System.out.println(reader.readLine());
}설명
- Java에서 파일, 네트워크, DB 연결처럼 외부 자원을 다룰 때는 "사용"만큼 "반드시 닫기"가 중요합니다.
try-with-resources는 이 문제를 언어 수준에서 더 안전하게 해결하는 문법입니다. - 이 문법은
AutoCloseable자원을 블록 끝에서 자동 정리해 줍니다. 그래서 수동finally보다 코드가 짧고, 누락 가능성도 줄어듭니다. - 현대 Java 파일 처리는
java.nio.file.Path와Files유틸리티를 중심으로 이해하는 편이 좋습니다. 예전File기반 감각보다 API가 훨씬 풍부합니다. Files.readString,Files.writeString,newBufferedReader처럼 상황에 맞는 고수준 API를 먼저 떠올리면 많은 파일 처리 코드를 간결하게 만들 수 있습니다.- 결국 이 카드는 입출력 카드이면서 자원 수명주기 카드이기도 합니다. Java에서는 "열었으면 닫는다"가 문법 선택과 함께 연결돼 있습니다.
빠른 정리
| 요소 | 역할 |
|---|---|
try-with-resources | 자원 자동 정리 |
AutoCloseable | 자동 닫기 대상 계약 |
Path | 파일 경로 표현 |
Files | 파일 읽기/쓰기 유틸리티 |
| 실무 가치 | 누수 감소, 코드 단순화 |
주의할 점
파일 처리 코드를 쓸 때는 로직보다 자원 수명주기를 먼저 보는 편이 좋습니다. 읽고 쓰는 작업 자체보다 닫기 누락이 더 큰 문제를 만드는 경우가 많습니다.
참고 링크
3 sources