이 둘은 Input/OutputStream의 자손이면서 모든 보조스트림의 조상이다.
보조스트림은 자체적으로 입출력을 수행할 수 없기 때문에 기반스트림을 필요로 한다.
protected FilterInputStream(InputStream in)
public FilterOutpustStream(OutputStream out)
위는 Filter시리즈의 생성자들이다.
Filter시리즈의 모든 메서드는 단순히 기반스트림의 메서드를 그대로 호출할 뿐이다. 이들이 의미있으려면, 상속을 통해 원하는 작업을 수행하도록 메서드들 오버라이딩 해줘야 한다.
FilterStream들을 상속받아 기반스트림에 보조기능을 추가한 보조스트림 클래스는 아래와 같다.
BufferedInput/OutputStream, DataInput/OutputStream, PushbackInputStream, PrintStream등…
이들은 스트림의 입출력 효율을 높이기 위해 버퍼를 사용하는 보조스트림이다. 버퍼(바이트 배열)을 이용해 한번에 여러바이트를 입출력하는 것이 빠르기 때문에 대부분의 입출력 작업에서 사용된다.
생성자는 다음과 같다.
BufferedInputStream(InputStream in, int size)
이는 주어진 InputStream인스턴스를 입력소스로 해, 지정된 크기의 버퍼를 갖는 BufferedInputStream인스턴스를 생성하낟. 만약 size값을 주지 않으면, 기볹거으로 8192byte크기를 갖도록 오버로딩 되어있다.
보통 입력소스가 파일일경우, 크기는 4096정도로 한다.
프로그램에서 read메서드를 호출하면.. BufferedInputStream은 입력소스로부터 버퍼 크기만큼 데이터를 읽어 자신의 내부 버퍼에 저장한다. 프로그램에서 이 버퍼에 저장된 모든 데이터를 다 읽고 다시 읽기위해 read를 호출하면, BufferedInputStream은 다시 버퍼 크기만큼 데이터를 입력소스에서 읽어 버퍼에 저장한다.