Java Writer 클래스: 캐릭터 스트림 마스터하기
Java Writer 클래스: 캐릭터 스트림 마스터하기
이 가이드는 Java Writer API, 주요 서브클래스, 핵심 메서드, 텍스트를 파일에 쓰는 단계별 예제를 설명합니다.
Writer란?
java.io.Writer 추상 클래스는 문자 출력 스트림을 나타냅니다. 직접 인스턴스화할 수 없지만, 구체적인 서브클래스들이 파일, 문자열, 네트워크 소켓에 텍스트를 쓰는 강력하고 타입 안전한 방법을 제공합니다.
일반적인 Writer 서브클래스
- BufferedWriter - 효율적 I/O를 위한 버퍼링 추가.
- OutputStreamWriter - 지정된 캐릭터셋으로 바이트 스트림을 문자 스트림으로 연결.
- FileWriter - 로컬 파일시스템의 파일에 문자 쓰기를 단순화.
- StringWriter - 메모리 내 문자열 버퍼에 쓰기.
Writer 인스턴스 생성하기
Writer를 인스턴스화하려면 패키지를 임포트하고 구체적인 서브클래스를 사용합니다. 예를 들어 output.txt라는 파일에 쓰려면:
import java.io.FileWriter;
import java.io.Writer;
Writer output = new FileWriter("output.txt");
Writer는 추상 클래스이므로 FileWriter, BufferedWriter, StringWriter 같은 서브클래스를 사용해야 합니다.
팁: try-with-resources를 사용하여 스트림을 자동으로 닫고 예외를 깔끔하게 처리하세요.
핵심 Writer 메서드
write(char[] cbuf) - 문자 배열을 씁니다.
write(String str) - 문자열을 씁니다.
append(char c) - 단일 문자를 추가합니다.
flush() - 버퍼링된 데이터를 강제로 출력합니다.
close() - 스트림을 닫고 리소스를 해제합니다.
실전 예제: FileWriter로 파일에 쓰기
아래는 try-with-resources를 사용하여 문자열을 output.txt에 쓰는 완전한 프로덕션 준비 예제입니다:
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
public class Main {
public static void main(String[] args) {
String data = "This is the data in the output file";
try (Writer output = new FileWriter("output.txt")) {
output.write(data);
} catch (IOException e) {
System.err.println("Error writing to file: " + e.getMessage());
}
}
}
이 프로그램을 실행하면 다음 내용의 output.txt가 생성됩니다:
This is the data in the output file
더 자세한 내용은 공식 Java 문서의 Writer를 참조하세요.