Engineering Note

[Java] BufferedReader, Reader 객체와 Stream 본문

Programming Language/Java

[Java] BufferedReader, Reader 객체와 Stream

Software Engineer Kim 2025. 7. 22. 10:10

Reader 객체

  • 문자 데이터가 외부에서 Java 애플리케이션으로 들어오는 스트림(흐름)을 읽어오는 책임을 맞는 객체
  • 외부에서 들어오는 문자데이터를 자바 프로그램이 사용할 수 있도록 연속적으로 읽어오는 역할.
  • abstract class
  • Reader 객체 자체는 Buffer기능이 없음.

 

 

BufferedReader 객체

  • inputStream으로 부터 텍스트를 읽는 역할
  • extends Reader
  • Reader 객체에 버퍼기능을 더해 입출력 성능을 향상 시킨 객체

 

 

InputStreamReader

  • byte 입력 스트림을 문자 입력 스트림으로 변환하는 역할
  • 즉, "0101010...(byte)"를 "글자(String)"로 바꿔줌
  • extends Reader

 

[InputStream] (byte)
     |
[InputStreamReader] (char, Reader 상속)
     |
[BufferedReader] (Reader 상속 + 버퍼링 + readLine())

 

 

Stream(스트림) = '흐름'

  • 데이터가 연속적으로 '한 방향'으로 흐르는 통로를 의미
  • 방향이 있는 데이터의 흐름. 데이터 통신이 필요하면 양방향 스트림을 열어야 함.
  • 입출력(I/O)에서 핵심 개념
  • 스트림은 "데이터가 조금씩, 순차적으로 들어온다/나간다"는 '패턴' 또는 '방식'을 의미

 

바이트 스트림 (byte stream)

  • 1byte 단위로 데이터(숫자, 바이너리, 이미지, 파일 등) 송수신
  • 클래스:
    • InputStream, OutputStream 및 그 하위 클래스들
    • 예: FileInputStream, Socket.getInputStream()

문자 스트림 (character stream)

  • 문자 단위(UTF-16, Unicode 등)로 데이터를 송수신
  • 클래스:
    • Reader, Writer 및 그 하위 클래스들
    • 예: FileReader, BufferedReader

 

Comments