[Java] IO

클라우드·2024년 4월 12일
0

Java

목록 보기
13/20
post-thumbnail

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를 이용해서 데이터를 출력할 수 있다.
    • System.out.println()
  • 정리하면 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) {

        // 키보드로 한 line을 입력 받아서 그대로 출력한다.
        // 당연히 입력 Stream과 출력 Stream이 필요하다.
        // 키보드로부터 입력을 받기 위한 Stream
        // 모니터에 출력하기 위한 출력 Stream
        // 표준 입력(키보드 입력) System.in -> 불편함
        // 표준 출력(모니터 출력) System.out
        InputStreamReader isr = new InputStreamReader(System.in);
        // 아직도 불편하다. InputStreamReader은 문자 단위로 입력 받는다.
        // 우리는 한 line 단위로 입력을 받고 싶다. (문자열 단위로)
        BufferedReader br = new BufferedReader(isr);

        try {
            String msg = br.readLine();
            System.out.println("입력받은 데이터: " + msg);
        } catch (Exception e) {

        }
    }
}
profile
안녕하세요 :)

0개의 댓글