InputStream

moon.kick·2025년 3월 6일
0
package ex0306;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;

public class SystemInExam {

	public static void main(String[] args) throws Exception { //2
		
		InputStream is = System.in; //1     //내가 먼저 입력하자~ 키보드입력....불편
		//int i =is.read(); //1
		//System.out.println(i+"="+(char)i);
		
		//byte 단위 처리를 ->문자단위(reader) 처리 변환 -> Buffered 이용 한줄읽기
		
		//1.//byte 단위 처리를 ->문자단위(reader) 처리 변환
		InputStreamReader isr = new InputStreamReader(is);
		//int i = isr.read();
		//System.out.println(i+"="+(char)i);
		
		//2. reader buffered 이용
		BufferedReader br = new BufferedReader(isr); //보조에 들어간다 
		String data = br.readLine();
		System.out.println("data="+data);
				
	}
}

보조 스트림(보조 스트림 클래스 또는 데코레이터 스트림이라고도 함)은 기본 스트림의 기능을 확장하기 위해 사용됩니다. 자바 I/O에서는 주 스트림(기본 스트림)에 추가적인 기능(예를 들어, 문자 변환, 버퍼링, 줄 단위 읽기 등)을 부여하기 위해 보조 스트림을 함께 사용합니다. 예제 코드를 기준으로 설명하면 다음과 같습니다:

System.in (기본 스트림):
키보드와 같이 외부 입력을 바이트 단위로 읽어들이는 기본 스트림입니다.

InputStreamReader (보조 스트림 1):
System.in과 같은 바이트 스트림을 문자 스트림으로 변환합니다.

역할: 바이트 데이터를 문자 데이터로 해석하여 문자 단위로 처리할 수 있게 합니다.
BufferedReader (보조 스트림 2):
InputStreamReader를 감싸서 버퍼링 기능을 제공합니다.

역할: 입력된 문자 데이터를 버퍼에 저장해두고, 한 줄씩(readLine() 메서드) 효율적으로 읽을 수 있도록 돕습니다.
이처럼 여러 보조 스트림을 겹겹이 쌓아(데코레이터 패턴) 기본 스트림에 원하는 기능을 추가할 수 있습니다. 이러한 구조 덕분에, 자바에서는 다양한 입출력 작업을 유연하고 효율적으로 수행할 수 있습니다.

profile
@mgkick

0개의 댓글