본문 바로가기

JAVA/JAVA Programming

[JAVA] BufferedReader in = new BufferedReader(new InputStreamReader (System.in)); 의미

반응형
 



1. System.in


BufferedReader in = new BufferedReader(new InputStreamReader (System.in));
키보드와 같은 사용자로부터 입력을 받는 표준입력스트림 객체를 나타냅니다. 그래서, System.in의 리턴값은 InputStream입니다.

※ InputStream : 입력스트림으로 부터,데이터를 byte단위로 읽어오는 byte stream입니다.


2. InputStreamReader

BufferedReader in = new BufferedReader(new InputStreamReader (System.in));

InputStreamReader는 인자로, InputStream을 취해서,Reader 스트림형태로 변환합니다. 변환시, 문자열인코딩을 줄수도있습니다. 그럼, Reader스트림이란, InputStream과는 달리, 입력스트림에서, 데이터를 character단위로,처리합니다.


3. BufferedReader

BufferedReader in = new BufferedReader(new InputStreamReader (System.in));

BufferedReader는 인자로 취한 Reader 스트림에 버퍼링기능을 추가한 입력스트림 클래스 입니다.

버퍼를 둠으로써, 파일,네트워크와 같은 물리적인 장치에서 데이터를 사용자가 요청할때마다 매번 읽어오는것보단, 일정량사이즈로 한번에 읽어온후, 버퍼에 보관합니다. 그리고, 사용자가 요구시,버퍼에서 읽어오게됩니다. 결국, 속도를 향상시키고, 시간의 부하를 줄일수 있게 됩니다.

그리고, 사용자가 사용하기 편리한, readLine()과 같이 한줄씩읽어오는 메소드를 제공합니다.


 


결국, BufferedReader을 사용하기위해서, 계속해서, 스트림을 wrap 한것입니다. 왜냐구요? BufferedReader가 사용자가 사용하기 편하고 많은기능을 제공하니까요. 복잡한 기능의 구현은 이미 Java API가 모두 해놓았구. 그리고 우리는 이것을 사용하는것이랍니다. 자바는 API에서 API로 끝나는 언어라고 말해도, 많이 틀리지는 않습니다.

 

아마, 여기까지 읽고도 이해하기 힘드실겁니다. 왜냐구요? 1챕터 분량의 내용을 몇줄로 설명시킬수는 없겠죠. 지식인보다 책을 자주 이용하시길 감히 말씀드립니다. 어렵게 배운지식이 오래갑니다. ^^*

 

덧붙여서, stream이 몬지 궁금하실거 같은데요. 스트림은 자바에서, 데이터 입출력시, 전송되는 데이터의 흐름을 말합니다. 간단히 설명하면, 자바에서 데이터 입출력시, 시스템을 사용한 직접적인 작업은 JVM과 JVM에의해 제공되는 라이브러리들에 의해서 처리되고, 사용자는 단지 스트림통해서, 데이터를 송신하거나 수신하기만 하면됩니다. 그래서, (데이터를 받는) 입력시, InputStream이란것을 이용한것입니다. InputStream 안쪽 작업은 자바가 구현해주는 거죠.

반응형