InputStreamReader — 바이트 스트림과 문자 스트림 사이의 다리

InputStreamReader — 바이트 스트림과 문자 스트림 사이의 다리

InputStreamReader는 바이트 스트림에서 문자 스트림으로의 다리(bridge)예요. 바이트를 읽고 지정한 문자셋으로 문자를 디코딩합니다. 사용하는 문자셋은 이름으로 지정하거나 명시적으로 주거나, 기본 문자셋을 사용할 수 있어요.

출처: Java API Reference

본문

이 클래스는 java.io.Reader를 상속하며 Closeable, AutoCloseable, Readable을 구현합니다. 직접 알려진 하위 클래스로 FileReader가 있어요.

InputStreamReaderread() 메서드 호출마다 기반 바이트 입력 스트림에서 한 개 이상의 바이트가 읽힐 수 있어요. 바이트를 문자로 효율적으로 변환하기 위해, 현재 읽기 연산을 만족하는 데 필요한 것보다 더 많은 바이트를 기반 스트림에서 미리 읽을 수 있어요. 최고의 효율을 위해 InputStreamReaderBufferedReader로 감싸는 것이 좋아요.

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의 기반이 되는 클래스예요.

더 알아보기 (Learn more)