Java StringWriter 마스터하기: 사용법, 메서드, 실전 예제
Java StringWriter 클래스
Java의 StringWriter가 문자 데이터를 메모리 내 버퍼에 쓰는 방식, 핵심 메서드, 실전 예제를 알아봅니다.
java.io 패키지의 StringWriter 클래스는 추상 Writer 클래스를 확장하며 개발자가 문자 데이터를 가변 문자열 버퍼에 쓸 수 있게 합니다. 이 버퍼는 필요에 따라 확장될 수 있으며 나중에 toString()을 통해 표준 String으로 변환할 수 있습니다.
참고: Java에서 문자열 버퍼는 가변 문자열처럼 동작하여 콘텐츠를 수정할 수 있습니다. toString() 메서드는 현재 값을 불변 String으로 조회하는 데 사용됩니다.
StringWriter 생성하기
StringWriter를 인스턴스화하려면 먼저 클래스를 임포트합니다:
import java.io.StringWriter;
그런 다음 객체를 생성합니다:
// 기본 버퍼 용량의 StringWriter 생성
StringWriter output = new StringWriter();
많은 양의 데이터가 예상된다면 초기 버퍼 크기를 지정할 수도 있습니다:
// 미리 정의된 버퍼 용량의 StringWriter 생성
StringWriter output = new StringWriter(int size);
size 인수는 내부 버퍼의 초기 용량을 결정합니다.
StringWriter의 핵심 메서드
이 클래스는 Writer에서 상속받은 여러 메서드를 구현하여 유연한 데이터 처리를 가능하게 합니다.
write() 메서드
write(int c) - 단일 문자를 씁니다.
write(char[] cbuf) - 문자 배열을 씁니다.
write(String str) - 문자열을 씁니다.
예제: StringWriter 사용하기
import java.io.StringWriter;
public class Main {
public static void main(String[] args) {
String data = "This is the text in the string.";
try {
// 기본 용량의 StringWriter 생성
StringWriter output = new StringWriter();
// 버퍼에 데이터 쓰기
output.write(data);
// 콘텐츠 출력
System.out.println("Data in the StringWriter: " + output);
output.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
실행 결과
Data in the StringWriter: This is the text in the string.
이 예제에서 output 변수는 StringWriter 인스턴스를 가집니다. write() 메서드는 문자열 데이터를 내부 버퍼에 추가하고, 버퍼의 콘텐츠는 output.toString() 호출로 표시됩니다.
버퍼에서 데이터 접근하기
getBuffer() - 내부 StringBuffer 인스턴스를 반환합니다.
toString() - 버퍼의 콘텐츠를 일반 String으로 반환합니다.
예제:
import java.io.StringWriter;
public class Main {
public static void main(String[] args) {
String data = "This is the original data";
try {
StringWriter output = new StringWriter();
output.write(data);
StringBuffer sb = output.getBuffer();
System.out.println("StringBuffer: " + sb);
String str = output.toString();
System.out.println("String: " + str);
output.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
실행 결과
StringBuffer: This is the original data
String: This is the original data
close() 메서드
StringWriter에서 close()를 호출해도 리소스를 해제하거나 추가 쓰기를 막지 않습니다. 닫은 후에도 객체를 계속 사용할 수 있습니다.
추가 StringWriter 메서드
| 메서드 | 설명 |
flush() | 모든 버퍼링된 데이터가 문자열 버퍼에 쓰이도록 보장(StringWriter에서는 사실상 no-op). |
append() | 현재 버퍼에 문자나 문자열을 추가합니다. |
완전한 레퍼런스는 공식 Java 문서를 참조하세요.