보조스트림

이은영·2022년 6월 20일
0

자바

목록 보기
3/5

보조스트림

다른 스트림과 연결 되어 여러 가지 편리한 기능을 제공해주는 스트림

자체적으로 입출력을 수행할 수 없음
보조스트림 변수 = new 보조스트림(연결스트림)

InputStream is = System.in;
InputStreamReader reader = new InputStreamReader(is); //콘솔 입력 스트림을 문자 변환 보조 스트림인 InputStreamReader에 연결하는 코드
BufferedReader br = new BufferedReader(reader); //문자 변환 보조 스트림인 InputStreamReader를 다시 BufferedReader에 연결하는 코드

문자 변환 보조 스트림

InputStreamReader

소스 스트림이 바이트 기반 스트림(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를 직접 생성할 수도 있음

  • FileReader는 InputStreamReader의 하위 클래스
  • FileReader가 ❗️내부적으로 FileInputStream에 + InputStreamReader보조 스트림을 연결한 것

OutputStreamWriter

바이트 출력 스트림에 연결되어 문자 출력 스트림인 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("파일 저장이 끝났습니다.");
  • FileOutputStream에 OutputStreamWriter를 연결하지 않고
    FileWriter를 직접 생성할 수도 있음
  • FileWriter가

성능 향상 보조 스트림

기본 타입 입출력 보조 스트림

profile
성장중인 개발자 (머리속의 생각을 글로 옮기는 연습을 하고 있습니다.)

0개의 댓글