Java
에서 데이터는 스트림(Stream)을 통해 입출력 된다.
스트림은 단일 방향으로 연속적으로 흘러가는 것을 말하는데 물이 높은 곳에서 낮은곳으로 흐르듯이 데이터는 출발지에서 나와 도착지로 흘러간다는 개념이다.
프로그램이 출발지냐 또는 도착지냐에 따라서 스트림의 종류가 결정된다.
프로그램이 데이터를 입력받을 때에는 입력(InputStream)이라고 부른다.
입력 스트림의 출발지는 키보드, 파일, 네트워크상의 프로그램이 될 수 있고,
출력 스트림의 도착지는 모니터, 파일, 네트워크상의 프로그램이 될 수 있다.
항상 프로그램을 기준으로 데이터가 들어오면 입력스트림이고 데이터가 나가면 출력스트림이라고 생각하면 된다. 프로그램이 네트워크상의 다른 프로그램과 데이터를 교환을 하기 위해서는 양쪽 모두 입력 스트림과 출력스트림이 필요하다. 스트림은 단방향 통신을 한다는 특징이 있으므로 하나의 스트림으로 입출력을 동시에 할 수 없다.
byte 단위 입출력 스트림 : 그림,멀티미디어, 문자등 모든 종류의 데이터들
문자 단위 입출력 스트림 : 오로지 문자만 주고 받을 수 있게 특화 되어 있다.
InputStream
은 바이트
기반 입력 스트림의 최상위 클래스로 추상 클래스 이다.
모든 바이트 기반 입력 스트림은 이 클래스를 상속받아서 만들어 진다.
InputStram 클래스에는 바이트 기반 입력 스트림이 기본적으로 가져야 할 메소드들이 있다.
메소드 | 설명 |
---|---|
read() | 입력 스트림으로 부터 1바이트를 읽고 읽은 byte를 리턴한다. |
read(byte[] b) | 입력 스트림으로 부터 읽은 바이트들을 매개값으로 주어진 바이트 배열b에 저장하고, 실제로 읽은 바이트 수를 리턴한다. |
read(byte[] b, int off, int len) | 입력 스트림으로부터 len개의 바이트만큼 읽고 매개값으로 주어진 바이트 배열 b[off]부터 len개 까지 저장한다. 그리고 실제로 읽은 바이트 수인 len개를 리턴한다. 만약 len개를 모두 읽지 못하면 실제로 읽은 바이트 수를 리턴한다. |
close() | 사용한 시스템 자원을 반납하고 입력스트림을 닫는다. |
OutputStream
은 바이트
기반 출력 스트림의 최상위 클래스로 추상 클래스 이다.
모든 바이트 기반 출력 스트림 클래스는 이 클래스를 상속받아서 만들어 진다.
메소드 | 설명 |
---|---|
write(int b) | 출력 스트림으로 부터 1바이트를 리턴한다. |
write(byte[] b) | 출력 스트림으로부터 주어진 바이트 배열 b의 모든 바이트를 리턴한다. |
write(byte[] b, int off, int len) | 출력 스트림으로 주어진 바이트 배열 b[off]부터 len개까지의 바이트를 보낸다. |
flush() | 버퍼에 잔류하는 모든 바이트를 출력한다. |
close() | 사용한 시스템 자원을 반납하고 입력스트림을 닫는다. |