Java/Do It! 자바 프로그래밍

[JAVA] 15-5. 보조 스트림

HSY_mumu 2022. 5. 12. 00:18
728x90

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

자바의 기본 데이터 타입별로 입출력하는데 사용되는 보조 스트림이다.  

자료를 쓸 때 사용한 메서드와 같은 자료형의 메서드로 읽어야 한다.

자료를 쓸 때 사용한 메서드 순서대로 읽어야 한다.

 

728x90