1. 입출력
Input과 Output의 약자, 컴퓨터 내부 또는 외부 장치와 프로그램 간의 데이터를 주고 받는것
장치와 입출력을 위해서는 하드웨어 장치에 직접 접근이 필요한데 다양한 매체에 존재하는 데이터들을 사용하기 위해 입출력 데이터를 처리할 공통적인 방법으로 스트림을 이용
2. 스트림(Stream)
입출력 장치에서 데이터를 읽고 쓰기 위해서 자바에서 제공하는 클래스
모든 스트림은 단방향이며 각각의 장치마다 연결할 수 있는 스트림이 존재한다.
하나의 스트림으로 입출력을 동시에 수행할 수 없으므로 동시에 수행하려면 2개의 스트림이 필요하다.
3. 입출력 스트림
3.1 스트림 개념
연속된 데이터의 단방향 흐름을 추상화한다.
데이터 소스와 상관없이 적용할 수 있어 매우 효과적이다.
- 스트림의 예
- 키보드 및 모니터의 입출력
- 프로그램과 외부장치, 파일의 입출력에서 데이터 흐름
- 네트워크와 통신하는 데이터의 흐름
- 데이터 집합체의 각 원소를 순회하면서 람다식으로 반복 처리되는 데이터 흐름
3.2 입출력 스트림의 특징
- 선입선출 구조라서 순차적으로 흘러가고 순차적으로 접근한다. (FIFO 구조)
- 임의 접근 파일 스트림을 제외한 모든 스트림은 단방향이다.
- 입출력 스트림은 객체이다.
- 출력 스트림과 입력 스트림을 연결해서 파이프라인 구성이 가능하다.
- 지연이 가능하다. 프로그램에 연결한 출력 스트림에 데이터가 가득 차면 프로그램을 더 이상 출력할 수 없어 빈 공간이 생길 때까지 지연되며, 데이터 소스에 연결한 입력 스트림도 가득 차면 프로그래밍 데이터를 처리해서 빈 공간이 생길 때까지 스트림이 지연된다.