본문 바로가기
프로그래밍/자바[JAVA]

22장. 파일 입출력 완전 정복 - File, BufferedReader, BufferedWriter 활용법

by 사업가 Jay 2025. 5. 16.

22장. 파일 입출력 완전 정복 - File, BufferedReader, BufferedWriter 활용법

"파일을 읽고 쓰는 게 이렇게 쉬웠다고?" 자바에서의 파일 입출력 기본기를 한번에 마스터하세요!

안녕하세요! 오늘은 자바에서 가장 실용적인 기능 중 하나인 '파일 입출력(IO)'에 대해 다뤄보려고 해요. 텍스트 파일을 읽거나 로그를 저장하고, 설정 파일을 불러오는 기능은 거의 모든 애플리케이션에 필요하죠. 저도 초창기에는 파일을 다루는 게 어렵고 복잡하다고 느꼈지만, File 클래스와 BufferedReader/BufferedWriter 같은 도구를 잘 활용하면 생각보다 훨씬 쉽게 다룰 수 있더라고요. 이번 22장에서는 자바의 대표적인 파일 입출력 클래스들과 그 사용법을 하나하나 예제로 소개할게요. 코딩의 실전감각을 키우고 싶다면 절대 놓치지 마세요!

File 클래스란 무엇인가?

File 클래스는 파일이나 디렉토리에 대한 경로 정보를 다루는 클래스예요. 실제 파일의 내용을 다루진 않지만, 파일 존재 여부, 생성, 삭제, 이름 변경, 경로 확인 등의 작업에 아주 유용하죠. 특히 파일이 존재하는지 먼저 확인하고 나서 처리할 때 필수적으로 사용돼요.


File file = new File("data.txt");
if (file.exists()) {
  System.out.println("파일 존재함");
} else {
  file.createNewFile(); // 파일 생성
}

BufferedReader로 파일 읽기

단계 설명
1 FileReader로 텍스트 파일 열기
2 BufferedReader로 감싸서 효율적인 읽기 구현
3 readLine() 메서드로 한 줄씩 읽기

BufferedWriter로 파일 쓰기

  • FileWriter를 이용해 파일 생성 및 쓰기 스트림 열기
  • BufferedWriter로 감싸면 성능이 향상됨 (버퍼링)
  • write() 또는 newLine() 메서드로 텍스트 기록

파일 입출력 시 유용한 팁

파일을 다룰 때는 예외 처리를 꼭 해주고, try-with-resources 구문을 통해 자원을 자동으로 정리하는 것이 좋아요. 파일을 열어두고 닫지 않으면 메모리 누수나 파일 잠금 문제가 생길 수 있어요.


try (BufferedReader br = new BufferedReader(new FileReader("log.txt"))) {
  String line;
  while ((line = br.readLine()) != null) {
    System.out.println(line);
  }
} catch (IOException e) {
  e.printStackTrace();
}

File, Buffered, Files 클래스 비교

클래스 주 용도 특징
File 파일 경로 정보 및 속성 입출력 기능 없음
BufferedReader/Writer 텍스트 읽기/쓰기 버퍼링을 통한 성능 향상
Files 고수준 파일 작업 Java NIO 기반, 유틸리티 제공

파일 입출력 시 흔한 실수

  • 파일을 닫지 않아 리소스 누수 발생
  • 인코딩을 지정하지 않아 한글 깨짐 문제 발생
  • 예외 처리를 하지 않아 오류 발생 시 앱이 강제 종료됨
Q File 클래스는 실제 파일을 읽거나 쓰는 기능이 있나요?

아니요. File 클래스는 파일의 경로, 이름, 존재 여부 등을 다루는 클래스이고 실제 내용 입출력은 BufferedReader/Writer 같은 스트림 클래스가 담당해요.

Q BufferedReader는 어떤 상황에서 쓰면 좋을까요?

텍스트 파일을 한 줄씩 읽어야 하는 상황, 예를 들어 로그 파일 분석이나 설정 파일 파싱 같은 곳에서 사용하면 좋아요.

Q 파일을 쓸 때 기존 내용은 덮어쓰기 되나요?

기본적으로 FileWriter는 기존 내용을 덮어써요. 이어쓰기를 원한다면 생성자에 true를 인자로 전달해서 append 모드를 사용해야 해요.

Q try-with-resources 구문은 꼭 써야 하나요?

꼭은 아니지만 매우 권장돼요. 자원을 자동으로 닫아주기 때문에 코드가 깔끔해지고 실수로 파일을 닫지 않는 문제를 예방할 수 있어요.

Q Files 클래스는 언제 쓰는 게 좋을까요?

Java 7 이후 추가된 Files 클래스는 고수준의 파일 조작을 도와줘요. 한 줄 코드로 전체 파일 복사, 삭제, 존재 여부 확인 등이 가능해요.

Q 텍스트 파일이 아닌 바이너리 파일도 다룰 수 있나요?

네. 텍스트 대신 InputStream, OutputStream 계열을 사용하면 이미지나 오디오처럼 바이너리 파일도 자유롭게 읽고 쓸 수 있어요.

파일 입출력은 자바를 실무에서 다룰 때 가장 자주 접하게 되는 기능 중 하나예요. 텍스트 파일 한 줄을 읽는 것부터 로그 기록, 설정 파일 저장까지 정말 다양한 상황에서 사용되죠. 처음에는 BufferedReader, BufferedWriter 같은 클래스 이름이 낯설고 복잡하게 느껴질 수 있지만, 직접 써보면 금세 익숙해질 거예요. 저도 처음엔 파일을 다루는 게 무서웠지만, 하나하나 써보면서 자신감을 얻게 됐어요. 여러분도 이 글을 참고해 꼭 실습해보고, 필요하다면 Files 클래스도 활용해보세요. 댓글로 여러분의 팁이나 질문을 남겨주시면 더 즐거운 학습이 될 거예요!

자바파일입출력, File클래스, BufferedReader, BufferedWriter, 파일읽기, 파일쓰기, 텍스트파일, trywithresources, 자바22장, javaio기초