I/O란 Input과 Output의 약자로 입려과 출력을 간단히 줄여서 입출력이라고 한다.
입출력: 컴퓨터 내부 또는 프로그램간의 데이터를 주고 받은 것
ex) 키보드로부터 데이터를 입력 받는 것 or System.out.println()을 이용해서 화면에 출력하는 것이 입출력의 기본적인 예
자바에서 입출력을 수행하려면 즉, 어느 한쪽에서 다른 쪽으로 데이터를 전달하려면 두 대상을 연결하고 데이터를 전송할 수 있는 무언가가 필요한데 이것을 스트림(Stream)이라고 정의한다.
스트림 : 데이터를 운반하는데 사용되는 연결통로, 스트림은 단방향 통신만 가능하기 때문에 하나의 스트림으로 입력과 출력 동시에 처리할 수 없다.
입력과 출력을 동시에 수행하려면 입력을 위한 스트림(Input Stream)과 출력을 위한 스트림(Output Stream) 모두 2개의 스트림이 필요하다.
스트림은 먼저 보낸 데이터를 먼저 받게 되어있으며 중간에 건너뜀 없이 연속적으로 데이터를 주고 받는다. 큐(queue)와 같은 FIFO(First In First Out) 구조로 되어있다.
스트림은 바이트 단위로 데이터를 전송하며 입출력 대상에 따라 다음과 같은 입출력 스트림이 있다.