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 기반, 유틸리티 제공 |
파일 입출력 시 흔한 실수
- 파일을 닫지 않아 리소스 누수 발생
- 인코딩을 지정하지 않아 한글 깨짐 문제 발생
- 예외 처리를 하지 않아 오류 발생 시 앱이 강제 종료됨
아니요. File 클래스는 파일의 경로, 이름, 존재 여부 등을 다루는 클래스이고 실제 내용 입출력은 BufferedReader/Writer 같은 스트림 클래스가 담당해요.
텍스트 파일을 한 줄씩 읽어야 하는 상황, 예를 들어 로그 파일 분석이나 설정 파일 파싱 같은 곳에서 사용하면 좋아요.
기본적으로 FileWriter는 기존 내용을 덮어써요. 이어쓰기를 원한다면 생성자에 true
를 인자로 전달해서 append 모드를 사용해야 해요.
꼭은 아니지만 매우 권장돼요. 자원을 자동으로 닫아주기 때문에 코드가 깔끔해지고 실수로 파일을 닫지 않는 문제를 예방할 수 있어요.
Java 7 이후 추가된 Files 클래스는 고수준의 파일 조작을 도와줘요. 한 줄 코드로 전체 파일 복사, 삭제, 존재 여부 확인 등이 가능해요.
네. 텍스트 대신 InputStream, OutputStream 계열을 사용하면 이미지나 오디오처럼 바이너리 파일도 자유롭게 읽고 쓸 수 있어요.
파일 입출력은 자바를 실무에서 다룰 때 가장 자주 접하게 되는 기능 중 하나예요. 텍스트 파일 한 줄을 읽는 것부터 로그 기록, 설정 파일 저장까지 정말 다양한 상황에서 사용되죠. 처음에는 BufferedReader, BufferedWriter 같은 클래스 이름이 낯설고 복잡하게 느껴질 수 있지만, 직접 써보면 금세 익숙해질 거예요. 저도 처음엔 파일을 다루는 게 무서웠지만, 하나하나 써보면서 자신감을 얻게 됐어요. 여러분도 이 글을 참고해 꼭 실습해보고, 필요하다면 Files 클래스도 활용해보세요. 댓글로 여러분의 팁이나 질문을 남겨주시면 더 즐거운 학습이 될 거예요!
자바파일입출력, File클래스, BufferedReader, BufferedWriter, 파일읽기, 파일쓰기, 텍스트파일, trywithresources, 자바22장, javaio기초
'프로그래밍 > 자바[JAVA]' 카테고리의 다른 글
24장. 자바로 배우는 CRUD 게시판 만들기 (1) | 2025.05.17 |
---|---|
23장. 스트림(Stream) API 기초 - 자바의 선언형 데이터 처리 시작하기 (3) | 2025.05.17 |
21장. 날짜와 시간 API 완벽 정리 - LocalDate, LocalTime, LocalDateTime 활용법 (0) | 2025.05.16 |
20장. 내부 클래스와 익명 클래스 - 자바 클래스의 유연한 구조 이해하기 (1) | 2025.05.16 |
19장. 열거형(Enum)과 상수 관리 - 코드의 가독성과 안정성 높이기 (0) | 2025.05.16 |