자바에서 모든 입출력은 **스트림(Stream)**을 통해 이루어진다.
입출력 장치는 매우 다양하기 때문에 장치에 따라 입출력 부분을 다르게 구현하면 호환성이 떨어진다.
따라서, 자바는 입출력 장치와 무관하고 일관성있게 프로그램을 구현할 수 있도록 일종의 가상통로인 스트림을 제공한다. 자료를 읽어 들이는 Source와 자료를 쓰려는 target에 따라 다른 스트림 클래스를 제공한다.
스트림을 3가지 기준에 따라 분류할 수 있다.
스트림은 단방향으로 자료가 이동하므로 입출력을 동시에 할 수 없다.
어떤 대상으로부터 데이터를 읽을 때 사용하는 스트림
어떤 대상으로 데이터를 출력할 때 사용하는 스트림
입력 스트림 | FileInputStream, FileReader, BufferedInputStream, BufferedReader 등 |
---|---|
출력 스트림 | FileOutputStream, FileWriter, BufferedOutputStream, BufferedWriter 등 |
바이트(byte) 단위로 자료의 입출력이 이루어지는 스트림