스트림의 기능을 향상시키거나 새로운 기능을 추가하기 위해 사용
보조 스트림은 실제 데이터를 주고 받는 스트림이 아니기 때문에 입출력 처리 불가능
무조건 기반스트림을 먼저 생성한 후 보조스트림을 생성하여야한다.
FileInputStream fis =new FileInputStream("test.txt"); // 1. 기반 스트림 생성
BufferedInputStream bis =new BufferedInputStream(fis); // 2. 보조 스트림 생성
bis.read(); // 보조스트림 참조변수 이용하여 데이터 읽어오기
소스 스트림이 바이트 기반 스트림 이지만 데이터가 문자일 경우 사용한다.
Reader와 Writer는 문자단위로 입출력을 하기 때문에 데이터가 문자인 경우 바이트 기반 스트림보다 편리하게 사용가능
System.in
, System.out
JVM이 자동으로 스트림을 제공해줌 직접 스트림 생성없이 편하게 사용가능
아래 예제는 Scanner 사용과 같은 메소드이다. Scanner 클래스가 나오기전엔 아래와같이 사용했다고한다.
public void input(){
// 보조스트림은 한개만 사용가능한것이아니라 여러개 붙여서 사용가능
InputStreamReader is = new InputSreamReader(System.in); //보조스트림
// 한줄씩 읽어오기 위해 BufferedReader 사용
BufferedReader br = new BufferedReader(is);
try{
System.out.print("값 입력 : ")
String value = br.readLine(); // 입력받은값 한줄 읽어오기
System.out.println("입력 받은 값 : " + value); //
}catch (IOException e) {
e.printStackTrace();
} finally {
try {
br.close();
// 보조 스트림을 닫으면 연결 된 기반 스트림도 닫힘
// 표준 입출력 스트림의 경우 시스템에서 연 스트림으로
// 닫고나서 다시 열 수 없음에 유의
} catch (IOException e) {
e.printStackTrace();
}
}
}