데이터는 출발지에서 도착지로 흘러가고, 자바에서는 스트림을 통해 데이터가 입출력된다.
출발지 : 출력 스트림 사용 (데이터를 출력해야 하므로)
도착지 : 입력 스트림 사용 (흘러온 데이터를 입력받아야 하므로)
java.io 패키지에서 여러 스트림 클래스를 제공한다. 스트림은 크게 두 종류로 구분한다.
어떤 기반 스트림인지는 최상위클래스를 보고 구별할 수 있다.
아래 최상위 클래스는 모두 추상 클래스이다(추상클래스 복습 : new연산자를 이용해 객체생성할 수 없다.)
모든 바이트/문자 기반의 입출력 스트림은 해당 최상위 클래스를 상속받아서 만들어진다. 또한 아래의 최상위 클래스에는 입출력 스트림이 가져야 할 기본적인 메소드가 정의되어있다.
구분 | 바이트 기반 스트림 | 문자 기반 스트림 | ||
---|---|---|---|---|
입력 스트림 | 출력 스트림 | 입력 스트림 | 출력 스트림 | |
최상위 클래스 | InputStream | OutputStream | Reader | Writer |
하위(자식) 클래스 예시 | XXXInputStream | XXXOutputStream | XXXReader | XXXWriter |
예) 이미지 바이너리 파일의 입출력 스트림 클래스는 FileInputStream, FileOutputStream
예) 텍스트 파일의 입출력 스트림 클래스는 FileReader, FileWriter
리턴 타입 | 메소드 | 설명 |
---|---|---|
void | write(int b) | 1byte를 출력 |
void | write(byte[] b) | '매개값 배열 b'의 모든 바이트 출력 |
void | write(byte[] b, int off, int len) | '매개값 배열 b'의 인덱스 b[off]부터 시작해서len개까지의 바이트 출력 |
void | flush() | 출력 버퍼에 잔류하는 모든 바이트 출력 |
void | close() | 출력 스트림을 닫는다. |