입력(input)과 출력(output) 처리
Input
읽기용 통로를 InputStream 이라고 함
외부자원(resource) 입력용버퍼 메모리
--------------------------------------------------->
읽기용통로 > 버퍼에 입력된값이 기록됨 > 읽음 > 변수에기록
--------------------------------------------------->
키보드 ------------------ (stdin)
디스크의 파일
네트워크상의 다른pc
데이터베이스 서버
Output
쓰기(출력)용 통로를 OutputStream 이라고 함
외부자원(resource) 출력용버퍼 메모리
<---------------------------------------------------
쓰기용통로 < 버퍼에 내보낼값이 기록됨 <내보냄< 변수값읽음
<---------------------------------------------------
모니터 ------------------ (stdout)
디스크의 파일
네트워크상의 다른 pc
데이터베이스 서버
stream(통로)는 시스템(os)가 관리하고 있음
외부 자원과의 입출력이 필요할 경우, 시스템으로 부터 스트림을 얻어와서 사용하고 난 다음 반드시 시스템으로 스트림을 반납해야 함
스트림은 단방향임(일방통행임)
자바에서 스트림의 종류를 두 가지로 구분됨
바이트(byte) 스트림 : 통로로 움직이는 데이터 크기가 1바이트임.
사운드, 이미지, 동영상과 같은 바이너리 파일들
기록된 정보를 정확히 볼 수는 없음
* 네트워크 입출력은 바이트스트림만 지원됨 : 객체 전송시 객체의 직렬화가 요구됨(직렬화 Serialization : 객체 안에 기록된 각 필드값들을 1바이트단위로 쪼개서 일렬로 나열시키는 것)
문자(character) 스트림 : 통로로 움직이는 데이터 크기가 2바이트임. 즉, 문자 1개씩 움직임.
문자 저장용 문서 파일들
기록된 정보를 볼 수 있음
@Stream구분.png 참조
입출력대상에 직접 연결되는 입출력스트림으로 데이터를 읽기/쓰기 위해서 반드시 사용해야 한다.
1|2바이트 단위의 입출력보다 효율성을 보완한 스트림클래스들이 제공됨
처리(보조) 스트림들은 단독으로 객체 생성 못 함. 기본 스트림 클래스에 대한 객체를 인자로 사용해 생성할 수 있음
외부자원 > 입/출력 스트림 >> 실행중인 프로그램(프로세스)
기본 입/출력 스트림을 바로 사용할 경우, 외부 자원과의 처리 속도 차이때문에 프로세스가 기다려야 되는 문제가 생기게 됨
외부자원 >> 기본스트림 >> 보조스트림1 >> 보조스트림2 >> 프로세스
보조스트림의 사용으로 해결. 여러개의 보조스트림을 연달아 사용할 수 있음.