어떤 프로그램에서든지 읽고 쓰는 행위들은 항상 일어나는 굉장히 빈번한 것들 중의

하나입니다. 물론 자바도 예외가 아닙니다. 자바라고 뭐 특별할게 있겠습니까?

하지만 자바가 가지는 입출력에 관한 독특한 생각이 있는데, 그것은 읽고 쓰는 행위에

대해서 아주 단순하게,무지 단순하게 생각하고 있다는 겁니다.

 

자바에서의 읽고 쓰기에 관한 생각은 어디에서 읽을 것인가? 혹은 어디로 쓸것 인가

하는 것 이것이 거의 전부입니다.

무슨 뚱딴지 같은 소리냐 하시겠지만 실상 이 두가지 개념은 아주 훌륭한 것이고 굉장히

간명한 것입니다. 혹시 메모리에 저장되어 있는 정보를 파일에 쓰는 행위, 혹은 파일에

있는 정보를 메모리로 읽어들이는 행위, 혹은 데이터베이스로부터 정보를 읽어들이고 콘솔

에 출력하는 행위등을 입출력이다라고 생각하는 독자분이 계시다면,지금부터 조금 변화된

생각, 그러니까 좀더 단순한 생각을 가지기를 권합니다.

자바에서는 최소한 여기에 관해서는 간명합니다.

 

 

자바에서 읽고,쓰기

 

그렇다면 자바는 어디에서 읽고 어디로 쓰는건가요? 스트림에서 읽고 스트림으로 씁니다.

 

자바는 어찌되었던 읽고,쓴다고 했을 때 스트림에서 읽고, 스트림으로 쓴다는 뜻입니다.

결과론으로 따져서 생각해 본다면 만약 자바가 정보를 읽어들이는 스트림을 파일로 부터

만들어 냈다면 결국엔 파일에서 정보를 읽는 셈이고, 정보를 읽어 들이는 스트림을

네트워크로부터 만들어 낸것이라면 네트워크에서 읽는 셈이며, 그 스트림이 데이타베이스로

부터 만들어낸 것이라면 데이터베이스로부터 읽는 것이고, 스트림이 바이트배열 혹은

스트링에서 만들어낸다면 메모리에서 읽는 셈입니다.

물론 쓰는 것도 같은 이치입니다. 이와 같이 자바에서는 스트림에서 읽고 스트림으로 쓰게 되지만 스트림에서 읽고,쓴 결과는 스트림이 어떻게 만들어 졌는가에 따라서 메모리에서

메모리로 혹은 메모리에서 파일로, 파일에서 데이터베이스로 읽고,쓸수 있습니다.

, 여러가지 미디어로 씌여지게 되는 것입니다.

한가지 확실한 것은 자바에서의 읽기,쓰기의 관심은 스트림에서 읽고 스트림으로 쓴다는 것

입니다.

 

스트림(Stream)

 

그렇다면 스트림(Stream)이란 무엇을 말하나요? 간명하게는 정보 즉,데이터를 읽고,쓸수

있는 데이타소스(Data Source)를 의미하는 개념이라고 보시면 됩니다.

실제 자바에서 읽고 쓰는 것은 모두 스트림을 통하기 때문에 스트림 뒤에 숨겨져 있는

하드웨어의 특성이라든지, 미디어의 종류에 대해서는  관심을 두지않아도 됩니다.

, 스트림이 데이터베이스 스트림인지, 네트워크 스트림인지, 파일 스트림인지 관심을

두지 않아도 됩니다. 마치 폴리모피즘을 이용해서 설계를 했을 때 폴리모피즘을 이용한

메소드 인자에 어떤 구체적인 객체가 전달되는지에는 관심을 가지지 않는 것처럼 말입니다.

 

자바에는 읽는 데이터의 성격에 따라서 크게 두가지 스트림을 제공하고 있습니다.

하나는 바이트 기반의 데이터를 읽고 쓰는데 유용한 바이트 스트림이고 다른 하나는 캐릭터

기반의 데이터를 읽고 쓰는데 유용한 캐릭터 스트림입니다.

바이트 스트림과 캐릭터 스트림은 각각 자바에서 읽기,쓰기의 양대 산맥의 꼭대기를 차지

하고 있습니다.

Posted by
,