1. Java IO
- Java 1.0부터 제공되는 자바의 기본적인 입출력 방식
- Java IO는 입출력에 관련된 상당히 많은 클래스와 인터페이스를 제공하고, java.io package로 묶어서 제공한다.
- Stream을 기반으로 처리한다.
- 기본적으로 Blocking I/O 방식을 이용한다. 입출력이 완료될 때까지 Thread가 block 된다.
- 대표적인 클래스로 InputStream, OutputStream, Reader, Writer 등이 있다.
- 참고로 Java NIO도 있다.
- Java 1.4에 처음 등장했다.
- 이름에서 의미하다시피 Non-Blocking IO를 지원한다. ⇒ 쉽게 말해 비동기 입출력할 수 있다.
- Stream을 사용하지 않고, Channel과 Buffer을 이용한 처리를 한다.
2. 표준 입력과 표준 출력
- 표준 입력과 표준 출력(standard-in, standard-out)은 사용하는 기기마다 다르다.
- 우리는 PC를 이용하고 있기 때문에 표준 입력 ⇒ 키보드, 표준 출력 ⇒ 모니터로 설정되어 있다.
- 자바에서는 이 표준 입력과 표준 출력을 어떻게 표현할까?
- System.out ⇒ 표준 출력에 대한 Stream
- 해당 객체(Stream)의 method를 이용해서 데이터를 출력할 수 있다.
- 정리하면 Java는 우리에게 출력 Stream 객체를 하나 기본으로 제공하고 있다. 당연히 해당 객체를 만들기 위한 class가 존재한다. ⇒ java.io.PrintStream
3. Stream
3.1 Stream은 객체이다.
3.2 Stream은 방향성이 있다.
3.3 Stream은 FIFO구조
3.4 Stream은 결합해서 사용할 수 있다.
package test;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class StreamTest {
public static void main(String[] args) {
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
try {
String msg = br.readLine();
System.out.println("입력받은 데이터: " + msg);
} catch (Exception e) {
}
}
}