📌 Stream : 일련의 연속성을 가진 순차적 데이터의 흐름. 데이터 전송을 위한 단방향 통로


   
 * 스트림의 종류


   1. 전송 데이터 크기에 따른 분류
    1) byte stream(1byte) : inputStream/OutputStream
       ex) FileIn(Out)putStream, ByteArrayIn(Out)putStream, SocketIn(Out)putStream
    2) char stream(2byte) : Reader/Writer
       ex) FileReader(Writer), OracleClobReader(Writer), PrintWriter


   2. 스트림 생성 방법과 필터링 여부에 따른 분류
    1) 1차 스트림 : 매체를 대상으로 직접 생성 및 개방할 수 있는 스트림
       ex) FileIn(Out)putStream, FileReader(Writer)
    2) 2차(연결형) 스트림 : 1차 스트림을 대상으로 연결형으로 생성되는 스트림 // 기본생성자가 없고 1차스트림에 연결
    buffered : BufferedReader(:Scanner와 유사/ BufferedWriter:System.out.println();과 유사), BufferedIn(Out)putStream
    filtered : DataIn(Out)putStream
   직렬화/역직렬화 : (Serialization/Deserialization) : ObjectIn(Out)putStream
   ***-Serializable 객체의 상태를 전송이나 저장을 위해 바이트 배열의 형태로 바꾸는 작업 
   - 매체 저장되어 있거나 전송된 바이트 배열로부터 Serializable 객체의 상태를 복원하는 작업(역직렬화)
 


   **스트림을 통해 데이터를 읽는 단계

 

 1. 매체를 핸들링 할 수 있는 형태의 객체로 생성. ex) new File("d:/contents/cat1.jpg");
 2. 단방향 1차 스트림 객체 생성, 매체를 대상으로 생성. ex) new FileInputStream(file);
     2-1. 필요시, 1차 스트림을 대상으로 2차 스트림 연결형으로 생성
 3. EOF, EOS(end of file, end of stream)(-1,null)반복적인 읽기
 4. 2차에서 1차 순으로 stream 종료(close) 

+ Recent posts