다른 스트림과 연결이 되어 여러 가지 편리한 기능을 제공해주는 스트림!
InputStream
, OutputStream
, Reader
, Writer
등에 연결해서 입출력을 수행한다.다음 그림은 입력 스트림과 출력 스트림에 보조 스트림을 연결한 모습을 가상화 한 것이다.
보조 스트림을 연결하려면 생성할 때 자신이 연결될 스트림을 다음과 같이 생성자의 매개값으로 제공
보조스트림 변수 = new 보조스트림(연결스트림)
예를 들어 InputStream
을 문자 변환 보조 스트림인 InputStreamReader
에 연결하는 코드는 다음과 같습니다
InputStream is = ...;
InputStreamReader reader = new InputStreamReader(is);
소스 스트림이 바이트 기반 스트림이면서 입출력 데이터가 문자라면 Reader
와 Writer
로 변환해서 사용하는 것을 고려할 수 있다. 그 이유는 문자 입출력은 Reader
와 Writer
이 편리하기 때문이다.
1 . OutputStreamWriter
OutputStreamWriter
는 바이트 기반 출력 스트림에 연결되어 문자 출력 스트림인 Writer
로 변환 하는 보조스트림이다.
2 . InputStreamReader
InputStreamReader
는 바이트 기반 입력 스트림에 연결되어 문자 입력 스트림인 Reader
로 변환 하는 보조 스트림이다.
보조 스트림 중에는 메모리 버퍼를 추가로 제공하여 프로그램의 실행 성능을 향상시키는 것들이 있습니다. 바이트 기반 스트림에서는 BufferedInputStream
, BufferedoutputStream
이 있고 문자 기반 스트림에는 BufferedReader
, BufferedWriter
가 있습니다.
1 . BufferedoutputStream
과 BufferedWriter
BufferedoutputStream
은 바이트 기반 출력 스트림에 연결되어 버퍼를 제공해주는 보조 스트림이고 BufferedWriter
은 문자 기반 출력 스트림에 연결되어 버퍼를 제공해주는 보조 스트림입니다.
2 . BufferedInputStream
과 BufferedReader
BufferedInputStream
은 바이트 기반 입력 스트림에 연결되어 버퍼를 제공해주는 보조 스트림이고, BufferedReader
은 문자 기반 입력 스트림에 연결되어 버퍼를 제공해주는 보조 스트림입니다.
DataInputStream
과 DataOutputStream
보조 스트림을 연결하면 기본타입인 boolean
, char
, short
, int
, long
, float
, double
를 입출력할 수 있습니다.
아래 코드는 DataInputStream
과 DataOutputStream
객체를 생성하는 코드입니다.
다른 보조 스트림과 마찬가지로 연결할 바이트 입출력 스트림을 생성자의 매개값으로 주면 됩니다.
DataInputStream dis = new DataInputStream(바이트 기반 입력 스트림);
DataOutputStream dos = new DataOutputStream(바이트 기반 출력 스트림);
PrintStream
과 PrintWriter
은 프린터와 유사하게 출력하는 print()
, println()
메소드를 가지고 있는 보조 스트림이다, 지금까지 매우 빈번히 사용 하던 콘솔 출력스트림인 System.out
이 바로 PrintStream
타입이이기 때문에 print()
, println()
메소드를 사용할 수 있었다.
PrintStream ps = new PrintStream(바이트 기반 출력 스트림);
PrintWriter pw = new PrintWriter(문자 기반 출력 스트림);
PrintStream
과 PrintWriter
은 다른 보조 스트림과 마찬가지로 연결할 출력 스트림을 생서어자의 매개값으로 받는다.