Java언어 스터디 Chapter14-2(보조스트림)

최재하·2022년 12월 19일
1

보조 스트림

다른 스트림과 연결이 되어 여러 가지 편리한 기능을 제공해주는 스트림!

  • 보조 스트림은 자체적으로 입출력을 수행할 수 없기 때문에 입출력 소스와 바로 연결되는 InputStream, OutputStream, Reader, Writer등에 연결해서 입출력을 수행한다.
  • 보조 스트림은 문자 변환, 입출력 성능 향상, 기본 타입 입출력 등의 기능을 제공해줍니다.

다음 그림은 입력 스트림과 출력 스트림에 보조 스트림을 연결한 모습을 가상화 한 것이다.


보조 스트림 연결하기

보조 스트림을 연결하려면 생성할 때 자신이 연결될 스트림을 다음과 같이 생성자의 매개값으로 제공

보조스트림 변수 = new 보조스트림(연결스트림)

예를 들어 InputStream을 문자 변환 보조 스트림인 InputStreamReader에 연결하는 코드는 다음과 같습니다

InputStream is = ...;
InputStreamReader reader = new InputStreamReader(is);

문자 변환 보조 스트림

소스 스트림이 바이트 기반 스트림이면서 입출력 데이터가 문자라면 ReaderWriter로 변환해서 사용하는 것을 고려할 수 있다. 그 이유는 문자 입출력은 ReaderWriter이 편리하기 때문이다.

1 . OutputStreamWriter
OutputStreamWriter는 바이트 기반 출력 스트림에 연결되어 문자 출력 스트림인 Writer로 변환 하는 보조스트림이다.


2 . InputStreamReader
InputStreamReader는 바이트 기반 입력 스트림에 연결되어 문자 입력 스트림인 Reader로 변환 하는 보조 스트림이다.


성능향상 보조 스트림

보조 스트림 중에는 메모리 버퍼를 추가로 제공하여 프로그램의 실행 성능을 향상시키는 것들이 있습니다. 바이트 기반 스트림에서는 BufferedInputStream, BufferedoutputStream이 있고 문자 기반 스트림에는 BufferedReader, BufferedWriter가 있습니다.

1 . BufferedoutputStreamBufferedWriter
BufferedoutputStream은 바이트 기반 출력 스트림에 연결되어 버퍼를 제공해주는 보조 스트림이고 BufferedWriter은 문자 기반 출력 스트림에 연결되어 버퍼를 제공해주는 보조 스트림입니다.


2 . BufferedInputStreamBufferedReader
BufferedInputStream은 바이트 기반 입력 스트림에 연결되어 버퍼를 제공해주는 보조 스트림이고, BufferedReader은 문자 기반 입력 스트림에 연결되어 버퍼를 제공해주는 보조 스트림입니다.


기본 타입 입출력 보조 스트림

DataInputStreamDataOutputStream 보조 스트림을 연결하면 기본타입인 boolean, char, short, int, long, float, double를 입출력할 수 있습니다.

아래 코드는 DataInputStreamDataOutputStream 객체를 생성하는 코드입니다.
다른 보조 스트림과 마찬가지로 연결할 바이트 입출력 스트림을 생성자의 매개값으로 주면 됩니다.

DataInputStream dis = new DataInputStream(바이트 기반 입력 스트림);
DataOutputStream dos = new DataOutputStream(바이트 기반 출력 스트림);

프린터 보조 스트림

PrintStreamPrintWriter은 프린터와 유사하게 출력하는 print(), println() 메소드를 가지고 있는 보조 스트림이다, 지금까지 매우 빈번히 사용 하던 콘솔 출력스트림인 System.out이 바로 PrintStream타입이이기 때문에 print(), println() 메소드를 사용할 수 있었다.

PrintStream ps = new PrintStream(바이트 기반 출력 스트림);
PrintWriter pw = new PrintWriter(문자 기반 출력 스트림);

PrintStreamPrintWriter은 다른 보조 스트림과 마찬가지로 연결할 출력 스트림을 생서어자의 매개값으로 받는다.

0개의 댓글