Java예외와 입출력

try with resources와 파일 처리

`try-with-resources`가 왜 중요한지와 `Files`, `Path`를 이용한 기본 파일 처리 흐름을 정리합니다.

마지막 수정 2026년 3월 22일

기본 패턴

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.PathFiles 유틸리티를 중심으로 이해하는 편이 좋습니다. 예전 File 기반 감각보다 API가 훨씬 풍부합니다.
  • Files.readString, Files.writeString, newBufferedReader처럼 상황에 맞는 고수준 API를 먼저 떠올리면 많은 파일 처리 코드를 간결하게 만들 수 있습니다.
  • 결국 이 카드는 입출력 카드이면서 자원 수명주기 카드이기도 합니다. Java에서는 "열었으면 닫는다"가 문법 선택과 함께 연결돼 있습니다.

빠른 정리

요소역할
try-with-resources자원 자동 정리
AutoCloseable자동 닫기 대상 계약
Path파일 경로 표현
Files파일 읽기/쓰기 유틸리티
실무 가치누수 감소, 코드 단순화

주의할 점

파일 처리 코드를 쓸 때는 로직보다 자원 수명주기를 먼저 보는 편이 좋습니다. 읽고 쓰는 작업 자체보다 닫기 누락이 더 큰 문제를 만드는 경우가 많습니다.

참고 링크

3 sources