Language/Java

버퍼링(Buffering)과 스트림(Stream)

Raconer 2023. 7. 1. 00:28
728x90

버퍼링(Buffering)과 스트림(Stream)

데이터를 효율적으로 처리하기 위한 두 가지 개념입니다.


📌 버퍼링 (Buffering)

  • 정의: 데이터를 임시로 저장하는 메모리 공간(버퍼)을 활용하여 데이터 전송을 효율화함
  • 역할:
    • 데이터를 작게 나누어 여러 번 처리하는 대신, 한 번에 묶어 처리하여 성능 향상
    • I/O 횟수를 줄여 리소스 절약

✅ 특징

  • 입력/출력 시 작은 데이터를 모아 한 번에 처리
  • Java에서는 다음과 같은 클래스로 지원:
    • BufferedReader, BufferedWriter
    • BufferedInputStream, BufferedOutputStream

📌 스트림 (Stream)

  • 정의: 데이터를 연속된 흐름(순차적)으로 처리하는 개념
  • 유형:
    • 바이트 스트림: InputStream, OutputStream
    • 문자 스트림: Reader, Writer
    • Java 8 Stream API: 컬렉션 등의 반복처리를 위한 함수형 스트림

✅ 특징

  • 단방향 데이터 처리 (읽기/쓰기 중 하나)
  • 다양한 데이터 소스를 일관된 방식으로 처리
  • 바이트 단위로 읽으면:
    • 효율적인 I/O 가능
    • 이진 데이터(파일/이미지 등) 원형 보존
    • 이식성과 호환성이 높음
  • 문자 스트림을 통해 텍스트 데이터 처리 용이

요약 비교

구분 버퍼링 (Buffering) 스트림 (Stream)
개념 데이터를 임시 저장소에 모아 효율적으로 처리 데이터의 흐름 자체를 추상화한 처리 방식
목적 I/O 성능 향상 (입출력 최소화) 다양한 데이터 소스에 대한 일관된 접근
사용 클래스 BufferedReader, BufferedWriter InputStream, OutputStream, Reader, Writer
처리 방식 데이터를 모아서 한 번에 처리 데이터를 순차적으로 한 줄씩 처리
장점 빠른 속도, 리소스 절약 유연한 처리, 다양한 포맷 지원
728x90

'Language > Java' 카테고리의 다른 글

검색이 빠른 자료구조  (0) 2023.07.12
JVM 메모리 구조  (0) 2023.06.10
클래스(class), 객체(object), 인스턴스(instance) 차이  (0) 2023.04.16