1️⃣ 입출력 스트림

데이터는 키보드를 통해 입력될 수도 있고, 파일 또는 프로그램으로부터 입력될 수도 있다. 반대로 데이터는 모니터로 출력될 수도 있고, 파일에 저장되거나 다른 프로그램으로 전송될 수도 있다. → 데이터 입출력

Screenshot 2025-06-23 at 6.31.53 PM.png

→ 자바는 입력 스트림과 출력스트림을 통해 데이터를 입출력. 스트림은 단방향으로 데이터가 흐르는 것을 말함.

프로그램을 기준으로 데이터가 들어오면 입력 스트림, 데이터가 나가면 출력 스트림.

프로그램이 다른 프로그램과 데이터를 교환하려면 양쪽 모두 입력 스트림과 출력 스트림이 필요.

스트림의 두가지 종류

  1. 바이트 스트림 : 그림, 멀티미디어, 문자 등 모든 종류의 데이터를 입출력할 때 사용
  2. 문자 스트림 : 문자만 입출력할 때 사용

자바는 데이터 입출력과 관련된 라이브러리를 java.io 패키지에서 제공.

Screenshot 2025-06-23 at 6.35.07 PM.png

→ 바이트 입출력 스트림의 최상위 클래스는 InputStreamOutputStream. 이 클래스를 상속받는 자식 클래스에는 접미사로 InputStream 또는 OutputStream이 붙음. 예를 들어, 이미지와 같은 바이너리 파일의 입출력 스트림 클래스는 FileInputStreamFileOutputStream.

→ 문자 입출력 스트림의 최상위 클래스는 ReaderWriter. 이 클래스를 상속받는 하위 클래스에는 접미사로 ReaderWriter가 붙음. 예를 들어 텍스트 파일의 입출력 스트림 클래스는 FileReader, FileWriter

Screenshot 2025-06-26 at 9.13.24 PM.png

2️⃣ 바이트 출력 스트림

OutputStream은 바이트 출력 스트림의 최상위 클래스로 추상 클래스.

Screenshot 2025-06-23 at 6.46.23 PM.png