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
자바의 기본 데이터 타입별로 입출력하는데 사용되는 보조 스트림이다.
자료를 쓸 때 사용한 메서드와 같은 자료형의 메서드로 읽어야 한다.
자료를 쓸 때 사용한 메서드 순서대로 읽어야 한다.
'Java > Do It! 자바 프로그래밍' 카테고리의 다른 글
[JAVA] 15-7. 그 외 입출력 클래스 (0) | 2022.05.12 |
---|---|
[JAVA] 15-6. 직렬화 (0) | 2022.05.12 |
[JAVA] 15-4. 문자 단위 스트림 (0) | 2022.05.11 |
[JAVA] 15-3. 바이트 단위 스트림 (0) | 2022.05.11 |
[JAVA] 15-2. 자바 입출력_표준 입출력 (0) | 2022.05.11 |