위 표에 작성된 스트림은 모두 "InputStream" 또는 "OutputStream"의 자식들이며,
각각 읽고 쓰는데 필요한 추상메서드를 자신에 맞게 구현된 것이다.
자바에서는 java.io 패키지를 통해 많은 종류의 입출력 관련 클래스들을 제공한다.
입출력을 처리할 수 있는 표준화된 방법을 제공하기 때문에 입출력의 대상이 달라져도 동일한 방법으로 입출력이 가능하다.
read(), write(int b)는 입출력의 대상에 따라 알맞게 구현하라는 의미로 "추상 메서드"로 정의되어 있으며, 나머지 메서드들은 추상 메서드인 read(), write(int b)를 이용해서 구현된 것으로 결과적으로는 read()와 write(int b)가 구현되어 있어야 한다.
스트림을 먼저 생성한 다음에 생성한 스트림을 이용하여 보조스트림을 생성할 수 있다. 즉, 기존 스트림을 가져다가 특정 기능을 추가하여 업그레이드하는 것이다.
예시코드
FileInputStreamfis=newFileInputStream("test.txt");
// 스트림 생성BufferedInputStreambis=newBufferedInputStream(fis);
// fis 스트림을 이용하여 보조 스트림 생성
bis.read();
// 보조 스트림(BufferedInputStream)으로부터 데이터를 읽음
위 코드를 보면 보조 스트림인 BufferedInputStream이 입력 기능(read())를 수행하는 것처럼 보이지만, 사실 실제 입력기능은 해당 보조 스트림과 연결된 FileInputStream이 수행하는 것이고 BufferedInputStream은 버퍼 기능만 추가 제공한다.
버퍼를 사용한 입출력과 사용하지 않은 입출력은 성능차이가 상당하므로 일반적으로 버퍼를 사용한 보조 스트림을 사용한다.
바이트기반 스트림의 보조 스트림
위 메서드 모두
각각 FilterInputStream, FilterOutputStream 메서드의 자식이고
FilterInputStream, FilterOutputStream 또한 InputStream, OutputStream의 자식으로
결국 모든 보조 스트림은 InputStream과 OutputStream의 자식으로 입출력 방식은 동일하다.
위 표에 작성된 스트림은 모두 "InputStream" 또는 "OutputStream"의 자식들이며,
각각 읽고 쓰는데 필요한 추상메서드를 자신에 맞게 구현된 것이다.
자바에서는 java.io 패키지를 통해 많은 종류의 입출력 관련 클래스들을 제공한다.
입출력을 처리할 수 있는 표준화된 방법을 제공하기 때문에 입출력의 대상이 달라져도 동일한 방법으로 입출력이 가능하다.
read(), write(int b)는 입출력의 대상에 따라 알맞게 구현하라는 의미로 "추상 메서드"로 정의되어 있으며, 나머지 메서드들은 추상 메서드인 read(), write(int b)를 이용해서 구현된 것으로 결과적으로는 read()와 write(int b)가 구현되어 있어야 한다.
스트림을 먼저 생성한 다음에 생성한 스트림을 이용하여 보조스트림을 생성할 수 있다. 즉, 기존 스트림을 가져다가 특정 기능을 추가하여 업그레이드하는 것이다.
예시코드
FileInputStreamfis=newFileInputStream("test.txt");
// 스트림 생성BufferedInputStreambis=newBufferedInputStream(fis);
// fis 스트림을 이용하여 보조 스트림 생성
bis.read();
// 보조 스트림(BufferedInputStream)으로부터 데이터를 읽음
위 코드를 보면 보조 스트림인 BufferedInputStream이 입력 기능(read())를 수행하는 것처럼 보이지만, 사실 실제 입력기능은 해당 보조 스트림과 연결된 FileInputStream이 수행하는 것이고 BufferedInputStream은 버퍼 기능만 추가 제공한다.
버퍼를 사용한 입출력과 사용하지 않은 입출력은 성능차이가 상당하므로 일반적으로 버퍼를 사용한 보조 스트림을 사용한다.
바이트기반 스트림의 보조 스트림
위 메서드 모두
각각 FilterInputStream, FilterOutputStream 메서드의 자식이고
FilterInputStream, FilterOutputStream 또한 InputStream, OutputStream의 자식으로
결국 모든 보조 스트림은 InputStream과 OutputStream의 자식으로 입출력 방식은 동일하다.