OutputStreamWriter — 문자 스트림과 바이트 스트림 사이의 다리
OutputStreamWriter — 문자 스트림과 바이트 스트림 사이의 다리
OutputStreamWriter는 문자 스트림에서 바이트 스트림으로의 다리(bridge)예요. 여기에 쓰인 문자는 지정한 문자셋으로 바이트에 인코딩됩니다. 사용하는 문자셋은 이름으로 지정하거나 명시적으로 주거나, 기본 문자셋을 받아들일 수 있어요.
본문
이 클래스는 java.io.Writer를 상속하며 Closeable, Flushable, Appendable, AutoCloseable을 구현합니다. 직접 알려진 하위 클래스로 FileWriter가 있어요.
각 write() 메서드 호출은 주어진 문자에 대해 인코딩 변환기를 호출해요. 결과 바이트는 기반 출력 스트림에 쓰기 전에 버퍼에 축적됩니다. write() 메서드에 전달된 문자 자체는 버퍼링되지 않아요. 최고의 효율을 위해 OutputStreamWriter를 BufferedWriter로 감싸 변환기 호출을 줄이는 것이 좋아요.
Writer out = new BufferedWriter(new OutputStreamWriter(anOutputStream));
서로게이트 쌍은 두 문자의 시퀀스로 표현되는 문자예요. 잘못된 서로게이트 요소는 뒤에 낮은 서로게이트가 오지 않는 높은 서로게이트 또는 앞에 높은 서로게이트가 없는 낮은 서로게이트예요. 이 클래스는 항상 잘못된 서로게이트 요소와 매핑할 수 없는 문자 시퀀스를 문자셋의 기본 대체 시퀀스로 대체해요. 인코딩 과정에 더 많은 제어가 필요하면 CharsetEncoder 클래스를 사용해야 해요.
생성자
OutputStreamWriter(OutputStream out)— 기본 문자 인코딩, 또는out이PrintStream이면 그 프린트 스트림이 사용하는 문자셋을 사용해 만들어요.OutputStreamWriter(OutputStream out, String charsetName)— 이름으로 지정한 문자셋을 사용해요. 지원되지 않는 문자셋이면UnsupportedEncodingException을 던져요.OutputStreamWriter(OutputStream out, Charset cs)— 주어진 문자셋을 사용해요.OutputStreamWriter(OutputStream out, CharsetEncoder enc)— 주어진 문자셋 인코더를 사용해요.
메서드
void write(int c)— 단일 문자를 써요.void write(char[] cbuf, int off, int len)— 문자 배열의 일부를 써요.void write(String str, int off, int len)— 문자열의 일부를 써요.void flush()— 스트림을 플러시해요.void close()— 먼저 플러시한 뒤 스트림을 닫아요.String getEncoding()— 이 스트림이 사용하는 문자 인코딩의 이름을 반환해요.
OutputStreamWriter는 특정 인코딩(예: UTF-8)으로 문자를 바이트로 변환해 내보낼 때 사용하며, FileWriter의 기반이 되는 클래스예요.