BACKEND/JAVA & SPRING

[JAVA] 입출력Stream이란?

이-프 2023. 8. 16. 12:22

Stream이란?

통로역할

단방향으로 데이터가 흐르는 것으로, 입력 스트림에서 출력스트림을 통해 데이터를 입출력한다.

Stream의 종류

  • 바이트 Stream : 그림, 멀티미디어, 문자 등 모든 종류의 데이터를 입출력할 때 사용
    • 바이트입력스트림 : InputStream - read() : 바이트 단위로 읽기
    • 바이트출력스트림 : OutputStream - writer() : 바이트 단위로 쓰기(출력)

    ex) 파일에서 바이트데이터를 읽는다? FileInputStream

    ex) 파일에서 바이트데이터를 저장하려면? FileOutputStream

    int data = System.in.read();
    System.out.println((char)data);
    int -> byte()
    byte() -> int //너무 복잡해져버림

  • 문자 Stream : 문자만 입출력할 때 사용 (한글)
    • 문자입력스트립림: Reader - read() : 문자단위로 데이터를 읽기
    • 문자출력스트림 : Writer - write(),print(),println() : 문자단위로 데이터를 출력

    ex) 파일에서 문자데이터를 읽으려면 어떤 스트림이 필요한가 ? FileReader

    ex) 파일에서 문자데이터를 저장하려면 어떤 스트림이 필요한가 ? FileWriter

처리방식에 따른 분류

  • 노드 Stream : 입출력 데이터에 가장 먼저 연결되는 스트림

  • 필터 Stream : 단독 사용 불가 → 노드 Stream에 연결(연쇄)해서 사용해야한다.

    바이트 Stream문자 Stream과 연결시켜서 사용하는 개념

    • 입출력의 성능을 개선시키는 용도
    • 버퍼기능이 있는 스트림
      • BufferedInputStream, BufferedOutputStream
      • BufferedReader, BufferedWriter

      Buffer을 사용하면 행 단위로 문자열을 읽는 readLine()메소드를 제공

  • 브릿지 Stream : 바이트 입력 스트림을 문자 입력 스트림으로 변환시키는 스트림

    바이트 입력 Stream → 문자 입력 Stream : InputStreamReader

    바이트 출력 Stream → 문자 출력 Stream : OutputStreamWriter

InputStream is = System.in;
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);

//(결과적으로) 키보드로부터 라인단위로 문자열을 입력받기 위한 스트림을 연결 ?
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

Uploaded by N2T

'BACKEND > JAVA & SPRING' 카테고리의 다른 글

Entity와 DTO의 연관관계  (0) 2023.09.18
Annotation이란?  (0) 2023.09.18
JpaRepository save()  (1) 2023.06.11
DAO DTO Repository  (0) 2023.05.19
Servlet(서블릿)  (0) 2023.05.18