다음의 코드는 키보드로부터 Press된 데이터를 화면으로 출력하는 코드이다.

 

주의할 점은 키보드를 누른다고해서 바로 read()메소드를 통해서 JVM에게 전달되는 것이 아니다.  write()메소드도 마찬가지로 눌려진 값은 OS가 관리하는 키보드 버퍼에 쌓이게되고 JVM에게 입력한 값을 전달하기 위해서는 엔터키를 입력해야 한다. JDKPrintStream write()메소드(System.out.write())의 소스를 보게되면 ‘\n”인지를 체크해서 개행문자인 경우 flush()를 호출 하도록 되어있다.

 

이렇게 전달된 문자열은 read()메소드를 통해서 한바이트씩 읽어 들일 수 있다. 즉 읽어들인 정수 하위 8비트를 그대로 표준 출력장치(모니터)에 출력하게 된다. (따라서 2바이트 문자권의 바이트를 읽게된다면 하위 8비트(1바이트)만 읽게 되므로 잘못된 해석을 할수 밖게 없다.)

 

 

public class SystemInputTest {

 

       /**

        * @param args

        */

       public static void main(String[] args) {

              int i = 0;

 

              try {

                     while ((i = System.in.read()) != -1) {

                           System.out.write(i);

                     } // while

              } catch (IOException e) {

                     System.out.println(e);

              }

       }

}

 

 

결과

Hello

Hello

 

헬로

헬로

 

 

Posted by Steven J.S Min
,