본문 바로가기

JAVA

I/O - 보조 스트림

입출력에서 스트림의 기능을 보완하기 위한 보조스트림이 제공됨

 

보조스트림은 실제 데이터를 주고받는 스트림이 아니기 때문에 데이터를 입출력 할 수 있는 기능은 없다.

다만 스트림의 기능을 향상시키거나 새로운 기능을 추가할 수 있다.

 

따라서 보조스트림만으로는 입출력을 처리할 수 없고,

스트림을 먼저 생성한 다음 이를 이용해서 보조스트림을 생성해야만 한다.

 

// 기반 스트림을 생성함, 파일을 입출력하는 FileInputStream / FileOutputStream
FileInputStream fis = new FileInputStream("test.txt");

// 기반 스트림을 이용해서 보조스트림을 생성함, BufferedInputStream / BufferedOutputStream
BufferedInputStream bis = new BufferedInputStream(fis);

// 보조스트림인 BufferedInputStream으로부터 데이터를 읽는다.
bis.read();

// 기반 스트림 생성 - > 보조 스트림 생성

 

BufferedInputStream과 연결된 FileInputStream이 실제 입력 기능을 수행하고,

보조스트림인 BufferedInputstream은 입력기능을 수행하지 않고 버퍼만을 제공한다.

 

성능면에서 차이를 보이기 때문에 대부분 버퍼를 이용한 보조스트림을 사용함.

 

 

입력 보조 스트림

FilterInputStream

BufferedInputStream(버퍼를 이용한 입력 성능 향상)

DataInputStream(int,float같은 기본형으로 데이터를 처리하는 기능)

SequenceInputStream(두개의 스트림을 하나로 연결함)

LineNumberInputStream(읽어온 데이터의 라인 번호를 카운트)

ObjectInputStream(파일을 이용하여 객체 직렬화와 연관)

*

PushbackInputStream(버퍼를 이용해서 읽어온 데이터를 다시 되돌리는 기능 : unread, push back to buffer)

 

출력 보조 스트림

FilterOutputStream

BufferedOutputStream

DataOutputStream

*

*

ObjectOutputStream

PrintStream(버퍼를 이용하며, 추가적인 print관련 기능 : print, printf, println 메서드)

*