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 |