[JAVA] 15-5. 보조 스트림
1. 보조 스트림이란?
보조 스트림은 입출력 대상이 되는 파일이나 네트워크에 직접 쓰거나 읽는 기능은 없고 보조 기능을 추가하는 스트림이다. 보조 스트림은 다른 스트림을 감싸고 있다는 의미로 Wrapper 스트림이라고도 한다.
보조 스트림은 자료 입출력을 직접 할 수 없기 때문에 다른 기반 스트림을 포함한다.
2. FilterInputStream 과 FilterOutputStream
FilterInputStream 과 FilterOutputStream 은 보조 스트림의 상위 클래스다.
생성자 | 매개변수 |
protected FilterInputStream(InputStream in) | InputStream |
protected FilterOutputStream(OutputStream out) | OutputStream |
두 클래스 모두 디폴트 생성자는 제공하지 않는다.
위 클래스는 직접 생성하여 사용하는 경우는 거의 없고 하위 클래스를 많이 사용한다.
보조 스트림의 생성자의 매개변수로 기반 스트림, 보조 스트림 모두 전달받을 수 있다.
다만, 이때 전달되는 보조 스트림은 내부에 기반 스트림을 포함하고 있다.
3. InputStreamReader 와 OutputStreamWriter
바이트 스트림-> 문자로 변환해주는 보조 스트림이다.
InputStreamReader 생성자의 매개변수로 바이트 스트림 & 문자 세트를 받을 수 있다.
문자 세트는 문자를 표현하는 인코딩 방식이다.
<InputStreamReader 클래스 생성자>
생성자 | 매개변수 | 설명 |
InputStreamReader(InputStream in) | InputStream | Reader 생성 |
InputStreamReader(InputStream in, Charset cs) | InputStream, Charset | |
InputStreamReader(InputStream in, CharsetDecoder dec) | InputStream, CharsetDecoder | |
InputStreamReader(InputStream in, String charsetName) | InputStream, charset 이름 |
생성자에서 매개변수로 받은 InputStream 이 자료를 읽으면 InputStreamReader 가 읽은 바이트를 문자로 변환한다.
4. Buffered 스트림
Buffered 스트림은 내부적으로 8192바이트 크기의 배열을 가지고 있고 이미 생성된 스트림에 배열 기능을 추가해 더 빠르게 입출력을 할 수 있는 버퍼링 기능을 제공한다.
<버퍼링 기능을 제공하는 스트림 클래스>
BufferedInputStream | 바이트 단위로 읽는 스트림에 버퍼링 기능 제공 |
BufferedOutputStream | 바이트 단위로 쓰는 스트림에 버퍼링 기능 제공 |
BufferedReader | 문자 단위로 읽는 스트림에 버퍼링 기능 제공 |
BufferedWriter | 문자 단위로 쓰는 스트림에 버퍼링 기능 제공 |
<BufferedInputStream 클래스 생성자>
생성자 | 매개변수 | 설명 |
BufferedInputStream(InputStream in) | InputStream | BufferedInputStream 생성 |
BufferedInputStream(InputStream in, int size) | InputStream, 버퍼 크기 |
5. DataInputStream 과 DataOutputStream
자바의 기본 데이터 타입별로 입출력하는데 사용되는 보조 스트림이다.
자료를 쓸 때 사용한 메서드와 같은 자료형의 메서드로 읽어야 한다.
자료를 쓸 때 사용한 메서드 순서대로 읽어야 한다.