참치코더의 꿈 메모장

바이트기반의 보조스트림 - java /2021/09/08 본문

JAVA

바이트기반의 보조스트림 - java /2021/09/08

참치깡 2021. 9. 8. 19:24
728x90

FilterInputStream과 FilterOutputStream

 

FilterInputStream/FilterOutputStream은 InputSteam/OutputStream의 자손이면서 

모든 보조스트림의 조상이다.

 

보조스트림은 자체적으로 입출력을 수행할 수 없기 때문에 기반스트림을 필요로 한다.

 

 

protected FilterInputStream(InputStream in)

public FilterOutputStream(OutputStream out)

 

생성자 FilterInputStream(InputStream in)는 접근 제어자가 protected이기 때문에 Filter InputStream의 

인스턴스를 생성해서 사용할 수 없고 상속을 통해서 오버라이딩 되어야 한다.

 

BufferedInputStream과 BufferedOutputStream

 

BufferedInputStream과 BufferedOutputStream은 스트림의 입출력 효율을 높이기 위해 

버퍼를 사용하는 보조스트림이다.

 

한바이트씩 입출력하는 것 보다는 버퍼를 이용해서 한 번에 여러 바이트를 입출력하는 것이 빠르기 때문에

대부분의 입출력 작업에 사용된다.

 

BufferedInputStream(InputStream in, int size) 주어진 InputStream인스턴스를 입력소스로 하며
지정된 크기(byte단위)의 버퍼를 갖는 BufferedInput Stream
인스턴스를 생성한다 
BufferedInputStream(InputStream in) 주어진 InputStream인스턴스를 입력소스로 하며
버퍼의 크기를 지정해 주지 않으므로 기본적으로 8192byte
크기의 버퍼를 갖게 된다.

 

BufferedInputStream의 버퍼크기는 입력소스로 부터 한 번에 가져올 수 있는 데이터의 크기로 지정하면 좋다.

 

* 보통 입력소스가 파일인 경우 4096 정도의 크기로 하는 것이 보통이며, 버퍼의 크기를 변경해가면서 

  테스트하면 최적의 버퍼크기를 알아낼 수 있다.

 

* 외부의 입력소스로 부터 읽는 것보다 내부의 버퍼로 부터 읽는 것이 훨씬 빠르기 때문에 

  그만큼 작업 효율이 높아진다.

 

BufferedOutputStream(OutputStream out, int size) 주어진 OutputStream인스턴스를 출력소스로 하며
지정된 크기의 버퍼를 갖는 BufferedOutputStream
인스턴스를 생성한다.
BufferedOutputStream(OutputStream out) 주어진 OutputStream인스턴스를 출력소스로 하며 
버퍼의 크기를 지정해주지 않으므로 기본적으로
8192 byte 크기의 버퍼를 갖게 된다
flush( ) 버퍼의 모든 내용을 출력소스에 출력한 다음,
버퍼를 비운다.
close( ) flush( )를 호출해서 버퍼의 모든 내용을 출력소스에
출력하고, BufferedOutputStream인스턴스가 사용하던 
모든 자원을 반환한다.

 

* 프로그램에서 모든 출력작업을 마친 후 BufferedOutputStream에 close( )나 flush( )를 호출해서

  마지막 버퍼에 있는 모든 내용이 출력소스에 출력되도록 해야 한다.

 

 

728x90
Comments