posted by changhozz 2012. 7. 10. 22:22


스트림(Stream)
자바에서 입출력을 수행하려면, 즉 어느 한쪽에서 다른 쪽으로 데이터를 전달하려면,
두 대상을 연결하고 데이터를 전송할 수 있는 무언가가 필요한데 이것을
스트림(Steam)이라고 정의했다.

스트림이란 데이터를 운반하는데 사용되는 연결통로이다.

스트림은 연속적인 데이터의 흐름을 물에 비유해서 붙여진 이름인데 여러가지로
유사한 점이 많다. 물이 한쪽 방향으로만 흐르는 것과 같이 스트림은 단방향통신만
가능하기 때문에 하나의 스트림으로 입력과 출력을 동시에 처리할 수 없다.
그래서 입력과 출력을 동시에 수행하려면 입력을 위한 입력스트림(input stream)과 출력을 위한
출력스트림(output stream), 모두 2개의 스트림이 필요하다.

스트림은 먼저 보낸 데이트를 먼저 받게 되어 있으며 중간에 건너뜀 없이 연속적으로 데이터를
주고받는다.


바이트기반이라 함은 입출력의 단위가 1byte라는 뜻이다. Java에서는 한 문자를 의미하는
char형이 1byte가 아니라 2byte이기 때문에 바이트기반의 스트림으로 2byte인 문자를
처리하는 데는 어려움이 있다.
이 점을 보완하기 위해서 문자기반의 스트림이 제공된다. 문자데이터를 입출력할 때는
바이트기반 스트림 대신 문자기반 스트림을 사용하자.

바이트기반  문자기반
InputStream  Reader
OutputStream  Writer

 

프로그램이 종료될 때, 사용하고 닫지 않은 스트림을 JVM이 자동적으로 닫아 주기는 하지만,
스트림을 사용해서 모든 작업을 마치고 난 후에는 close()를 호출해서 반드시 닫아 주어야 한다.
[참고] ByteArrayInputStream과 같이 메모리를 사용하는 스트림과 System.in ,System.out과 같은
표준입출력스트림은 닫아 주지 않아도 된다.

'JAVA > 팀장님 JAVA수업' 카테고리의 다른 글

Collection 보충설명중 (Vector와 ArrayList)  (0) 2012.07.17
팀장님 수업 10  (0) 2012.07.13
중요정리!!(부모클래스와 자식클래스)  (0) 2012.07.06
팀장님 수업9  (0) 2012.07.06
팀장님 수업 8  (0) 2012.07.03