StringWriter 클래스는 Writer 클래스의 하위 클래스로, 문자열을 출력 스트림(output stream)에 기록하는 역할을 담당합니다. 이 문자 스트림은 문자열을 쓸 때 데이터를 내부의 StringBuffer(문자열 버퍼)에 차곡차곡 모아두었다가 하나의 완성된 문자열로 구성합니다. StringWriter의 버퍼는 저장되는 데이터 양에 따라 자동으로 확장되기 때문에 미리 용량을 지정할 필요가 없다는 점이 큰 장점입니다.
주요 메서드
- write(): 문자열 또는 단일 문자를 내부 버퍼에 기록합니다.
- append(): CharSequence 형태의 문자열을 버퍼의 끝에 추가합니다.
- getBuffer(): StringWriter가 내부적으로 사용하는 StringBuffer 객체를 그대로 반환합니다.
- flush(): 스트림을 플러시합니다.
- close(): 스트림을 닫습니다. StringWriter는 close() 호출 이후에도 getBuffer()를 사용할 수 있어 안전합니다.
구문
public class StringWriter extends Writer
예제 코드
import java.io.*;
public class StringWriterTest {
public static void main(String args[]) {
String str = "Welcome to Tutorials Point";
try {
StringWriter sw = new StringWriter();
sw.write(str);
StringBuffer sb = new StringBuffer();
sb = sw.getBuffer();
System.out.println("StringBuffer: "+ sb);
System.out.println("String written by StringWriter: "+ sw);
sw.close();
} catch (IOException ioe) {
System.out.println(ioe);
}
}
}
실행 결과
StringBuffer: Welcome to Tutorials Point String written by StringWriter: Welcome to Tutorials Point
위 예제처럼 StringWriter는 write() 메서드로 문자열을 버퍼에 기록한 뒤, getBuffer()를 통해 해당 내용을 StringBuffer 형태로 손쉽게 꺼내올 수 있습니다. 파일이나 네트워크 같은 실제 입출력 대상 없이 문자열 조립이 필요할 때 유용하게 활용됩니다.