1️⃣ 입·출력 개념

개념 설명
입력(Input) 외부 → 프로그램으로 데이터 전달
출력(Output) 프로그램 → 외부 장치로 데이터 전달
스트림(Stream) 데이터가 흐르는 통로 (순차적으로 데이터 이동)

스트림의 분류

종류 기반 대표 클래스
바이트 스트림 1바이트 단위 처리 InputStream, OutputStream
문자 스트림 2바이트 유니코드 처리 Reader, Writer

2️⃣ java.io 패키지 핵심 클래스

(1) InputStream / OutputStream (바이트 기반)

InputStream is = System.in;
int v = is.read();

OutputStream out = System.out;
out.write(v);


(2) InputStreamReader / OutputStreamWriter (문자 변환)

바이트 → 문자 변환(인코딩 보정)

InputStreamReader isr = new InputStreamReader(System.in);
int v = isr.read();
System.out.println((char)v);


(3) FileReader / FileWriter (파일 입·출력)

FileReader fr = new FileReader("aaa.txt");
FileWriter fw = new FileWriter("bbb.txt");

클래스 역할
FileReader 파일 데이터를 문자 단위로 읽음
FileWriter 파일에 문자 단위로 기록