1. 보조 스트림

스트림의 기능을 향상시키거나 새로운 기능을 추가하기 위해 사용

보조 스트림은 실제 데이터를 주고 받는 스트림이 아니기 때문에 입출력 처리 불가능

무조건 기반스트림을 먼저 생성한 후 보조스트림을 생성하여야한다.

2. 보조 스트림 종류

FileInputStream fis =new FileInputStream("test.txt"); // 1. 기반 스트림 생성
BufferedInputStream bis =new BufferedInputStream(fis); // 2. 보조 스트림 생성
bis.read(); // 보조스트림 참조변수 이용하여 데이터 읽어오기

2.1 문자 변환 스트림

소스 스트림이 바이트 기반 스트림 이지만 데이터가 문자일 경우 사용한다.

Reader와 Writer는 문자단위로 입출력을 하기 때문에 데이터가 문자인 경우 바이트 기반 스트림보다 편리하게 사용가능

2.1.1 InputStreamReader

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();
			}
		}
}

2.1.2 OutputStreamWriter