Java BufferedWriter: 효율적 캐릭터 I/O 완전 해설
Java BufferedWriter
이 가이드는 Java BufferedWriter 클래스, 내부 버퍼링, 핵심 메서드, 실전 코드 예제를 설명합니다.
java.io 패키지의 BufferedWriter 클래스는 다른 Writer를 래핑하여 효율적인 문자 출력을 제공합니다. 데이터를 메모리에 버퍼링함으로써 비용이 많이 드는 디스크 I/O 연산을 줄입니다.
BufferedWriter 작동 원리
이 클래스는 8,192자(기본 크기)의 내부 버퍼를 유지합니다. 데이터를 쓰면 문자가 먼저 이 버퍼에 저장됩니다. 버퍼가 가득 차거나 라이터가 닫히면 콘텐츠가 기본 스트림으로 플러시됩니다.
이 전략은 디스크 쓰기 횟수를 최소화하여 문자 출력을 눈에 띄게 빠르게 만듭니다.
BufferedWriter 생성하기
클래스를 임포트하고 FileWriter(또는 다른 Writer)를 래핑하여 BufferedWriter를 생성합니다:
FileWriter file = new FileWriter("output.txt");
BufferedWriter buffer = new BufferedWriter(file);
버퍼는 기본적으로 8,192자이지만 커스텀 크기를 지정할 수 있습니다:
BufferedWriter buffer = new BufferedWriter(file, 16384); // 16KB 버퍼
BufferedWriter 메서드
write()
write(int c) - 단일 문자를 씁니다.
write(char[] cbuf) - 문자 배열을 씁니다.
write(String str) - 문자열을 씁니다.
예제: 파일에 쓰기
import java.io.FileWriter;
import java.io.BufferedWriter;
public class Main {
public static void main(String[] args) {
String data = "This is the data in the output file";
try {
FileWriter file = new FileWriter("output.txt");
BufferedWriter out = new BufferedWriter(file);
out.write(data);
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
결과 output.txt에는 지정된 문자열이 들어있습니다.
flush()
버퍼링된 데이터를 기본 스트림에 즉시 쓰도록 강제합니다.
out.flush(); // 버퍼링된 문자를 파일에 씀
close()
라이터를 닫고 시스템 리소스를 해제합니다. close() 호출 후 라이터를 다시 사용할 수 없습니다.
기타 유용한 메서드
| 메서드 | 설명 |
newLine() | 플랫폼별 줄 구분자를 삽입합니다. |
append(char c) | 단일 문자를 추가합니다. |
append(CharSequence csq) | 문자 시퀀스를 추가합니다. |
완전한 API는 공식 Java BufferedWriter 문서를 참조하세요.