Stream은 장치(device)로부터 데이터를 입/출력할 수 있게 합니다.
장치에는 파일, 키보드, 모니터, 마우스, 메모리, 네트워크 등이 해당됩니다.
Stream의 구분
- 문자 단위로 처리하는 문자 스트림(Reader/Writer)
- 바이트 단위로 처리하는 바이트 스트림(InputStream/OutputStream)
이 중 표준 입출력 스트림은 이미 지금껏 많이 사용해 왔습니다.
System.out / System.in / System.err
표준 입출력(Standard IO)이란 장치를 특별히 지정하지 않았을 때 사용되는 것입니다.
이들은 System 클래스에 static 멤버로 선언되어 있기 때문에 어디서나 즉시 사용할 수 있습니다.
package java.lang; public class System { public static PrintStream out; public static InputStream in; public static PrintStream err; }
위에서 out과 err는 PrintStream형으로 자료형까지 같지만 둘의 차이점은,
err로 출력되는 것은 리다이렉트(Redirect)되지 않고 콘솔에서만 확인이 가능하다는 것입니다.
아래는 데이터의 입력과 출력을 보여주는 간단한 예입니다.
import java.io.*; public class StandardIO { public static void main(String[] args) throws IOException { // 한 글자를 입력받아 i에 할당 int i = System.in.read(); System.out.println(i); } } /* $ java StandardIO a 97 */
위 예는 하나의 타이핑을 입력받고 엔터를 누르면 아스키 코드값을 출력하는 예입니다.
System.out.read() 를 사용하면 반드시 에러처리를 해주어야 합니다.
위의 예처럼 한 글자만이 아닌 여러 글자를 처리하려면 main 부분을 아래처럼 변경합니다.
int i; // 엔터가 입력될 때까지 while( (i=System.in.read()) != '\n' ) { // 아스키코드 숫자를 문자로 변경 System.out.print( (char)i ); } /* $ java StandardIO hello hello */
WRITTEN BY
- 손가락귀신
정신 못차리면, 벌 받는다.
,