다음의 코드는 키보드로부터 Press된 데이터를 화면으로 출력하는 코드이다.
주의할 점은 키보드를 누른다고해서 바로 read()메소드를 통해서 JVM에게 전달되는 것이 아니다. write()메소드도 마찬가지로 눌려진 값은 OS가 관리하는 키보드 버퍼에 쌓이게되고 JVM에게 입력한 값을 전달하기 위해서는 엔터키를 입력해야 한다. JDK의 PrintStream의 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
헬로
헬로
'Java > Input/Output Facilities' 카테고리의 다른 글
[바이트 스트림] 입출력시 OS에대한 고려해야할 사항 – 파일 IO Stream (0) | 2013.02.10 |
---|---|
IO클래스 사용시 지켜야 할 점. (0) | 2013.02.10 |
임시파일 생성 (0) | 2013.02.09 |
[바이트 스트림] InputStreamReader를 이용한 라인단위로 [키보드,소켓,파일]로부터 읽고 출력 (0) | 2013.02.09 |
Java IO클래스 구조 및 클래스명에 사용된 단어의 의미 (0) | 2013.02.09 |