Stream에 대한 정의 



 **Stream ( 데이터를 주고 받기 위한 통로 )


외부 HW나 파일 또는 네트워크와 데이터를 주고받을 수 있는 통로 


[일반적으로 스트림을 쓰는 경우 ]


스트림

  Program              <======================>  File, Network (Soket), H/W ( keyboard, Monitor) 

  

  


  

  keyboard와 연결된 스트림은 System.int

  Monitor와 연결된 스트림은 System.out

  

  


  

[ 방향에 따른 분류 ]

  

1) Input Stream 

  

2) Output Stream  

  


[ 데이터에 따른 분류 ]

  

1) Byte Stream     : 일반적인 스트림 

  

2) Character Stream : 문자 단위로 해석 

  

  문자에는 Encoding이 있다 





  AComputer <-----------------> BComputer

   A컴퓨터와 B컴퓨터가 통신을 하고 싶다 . 

  

  OS  == OS      운영체제마다 Default가 있다. // 운영체제가 다르면 안된다 

      언어 ==언어     프로그래밍 언어어도 같아야한다 . 

운영체제와 언어가 다르면 Character를 안쓰고 ByteStream을써야한다.


[처리과정]


             //try안에 작성을 한다.

try{  

     1) 스트림 생성 

     2) 읽고 쓰기 

}

   //반드시 닫아하기 때문에 finally에 저장 

finally { 

      3) 스트림 닫기  ( 항상 닫아야합니다 ) 

}

프로그램이 종료되지 않는다면, 상관이 없는데 

종료가 안되면 문제가 생긴다. 

java.io의 close()를 해주지 않으면 어떤 문제가 생길까요 ? 



Data에 수정을 하기 위해 접근을 하면,  Lock에는  eXclusive와  Shared가 있습니다.

Lock에는 Write는 1개, Read는  n개가 있습니다.

수정을 할 때는 eXclusive가 있는지 확인해보고 eXclusive가 있으면 수정의 권한을 가지게됩니다. 

그러나 Close()를 해주지 않으면 eXclusive는 이미 다른 프로그램에 사용중이라서 

다른 프로그램은 Data에 수정으로 접근을 할수 없습니다. 

단, 읽기는 n개가 있기 때문에 수에 제약을 받지 않습니다. 



+ Recent posts