InputStreamReader — 바이트 스트림과 문자 스트림 사이의 다리
InputStreamReader — 바이트 스트림과 문자 스트림 사이의 다리
InputStreamReader는 바이트 스트림에서 문자 스트림으로의 다리(bridge)예요. 바이트를 읽고 지정한 문자셋으로 문자를 디코딩합니다. 사용하는 문자셋은 이름으로 지정하거나 명시적으로 주거나, 기본 문자셋을 사용할 수 있어요.
본문
이 클래스는 java.io.Reader를 상속하며 Closeable, AutoCloseable, Readable을 구현합니다. 직접 알려진 하위 클래스로 FileReader가 있어요.
InputStreamReader의 read() 메서드 호출마다 기반 바이트 입력 스트림에서 한 개 이상의 바이트가 읽힐 수 있어요. 바이트를 문자로 효율적으로 변환하기 위해, 현재 읽기 연산을 만족하는 데 필요한 것보다 더 많은 바이트를 기반 스트림에서 미리 읽을 수 있어요. 최고의 효율을 위해 InputStreamReader를 BufferedReader로 감싸는 것이 좋아요.
BufferedReader in = new BufferedReader(new InputStreamReader(anInputStream));
생성자
InputStreamReader(InputStream in)— 기본 문자셋을 사용하는InputStreamReader를 만들어요.InputStreamReader(InputStream in, String charsetName)— 이름으로 지정한 문자셋을 사용해요. 지원되지 않는 문자셋 이름이면UnsupportedEncodingException을 던져요.InputStreamReader(InputStream in, Charset cs)— 주어진 문자셋을 사용해요.InputStreamReader(InputStream in, CharsetDecoder dec)— 주어진 문자셋 디코더를 사용해요.
메서드
int read()— 단일 문자를 읽어요.int read(char[] cbuf, int off, int len)— 문자를 배열의 일부로 읽어요.boolean ready()— 이 스트림이 읽을 준비가 됐는지 알려줘요.String getEncoding()— 이 스트림이 사용하는 문자 인코딩의 이름을 반환해요. 스트림이 닫히면null을 반환해요.void close()— 스트림을 닫고 관련 시스템 자원을 해제해요.
InputStreamReader는 특정 인코딩(예: UTF-8)으로 된 바이트 입력을 문자로 올바르게 읽을 때 사용하며, FileReader의 기반이 되는 클래스예요.