다른 스트림과 연결 되어 여러 가지 편리한 기능을 제공해주는 스트림
자체적으로 입출력을 수행할 수 없음
보조스트림 변수 = new 보조스트림(연결스트림)
InputStream is = System.in; InputStreamReader reader = new InputStreamReader(is); //콘솔 입력 스트림을 문자 변환 보조 스트림인 InputStreamReader에 연결하는 코드 BufferedReader br = new BufferedReader(reader); //문자 변환 보조 스트림인 InputStreamReader를 다시 BufferedReader에 연결하는 코드
소스 스트림이 바이트 기반 스트림(InputStream, outputStream, FileInputStream, FileoutputStream)이지만 데이터가 문자일 경우 사용
Reader와 Writer는 문자 단위로 입출력 - 바이트 기반 스트림보다 편리
문자셋의 종류를 지정할 수 있기 때문에 다양한 문자 입출력 가능
FileInputStream fis = new FileInputStream("C:/Temp/file.txt");
Reader reader = new InputStreamReader(fis); //파일 입력을 위한 FileInputStream을 다음과 같이 Reader타입으로 변환할 수 있음
InputStream is = System.in; //is는 바이트입력스트림
Reader reader = new InputStreamReader(is); //콘솔 입력을 위한 InputStream을 다음과 같이 Reader타입으로 변환할 수 있음
int readCharNo;
char[] cbuf = new char[100];
while((readCharNo = reader.read(cbuf))!=-1) { //계속 입력
String data = new String(cbuf,0,readCharNo);
System.out.println(data);}
reader.close();
FileInputStream에 InputStreamReader를 연결하지 않고 FileReader를 직접 생성할 수도 있음
바이트 출력 스트림에 연결되어 문자 출력 스트림인 Writer로 변환시키는 보조 스트림
FileOutputStream fos = new FileOutputStream("C:/Temp/file.txt);
Writer writer = new OutputStreamWriter(fos); #파일 출력을 위한 FileOutputStream을 다음과 같이 Writer타입으로 변환할 수 있음
Ex) FileOutputStream을 Writer로 변환해서 문자열을 파일에 저장하는 예제
File dir = new File("C:/Temp");
if(dir.exists() == false) {dir.mkdir();}
File file = new File("C:/Temp/file.txt");
if(file.exists()) {file.createNewFile();}
FileOutputStream fos = new FileOutputStream("/Users/eunyoung/Documents/javaIO/src/chap71/file.txt",true); //이어쓰기기능
Writer writer = new OutputStreamWriter(fos);
String data = "바이트 출력 스트림을 문자 출력 스트림으로 변환\n";
writer.write(data);
writer.flush();
writer.close();
System.out.println("파일 저장이 끝났습니다.");