🥞 BE
home

I/O 입출력 Stream

Date
2024/07/18
Category
Programming Language
Tag
Java
Detail
Java Deep

Stream이란?

1.
Data Source (File, 키보드, 원격 컴퓨터)
: 데이터의 근원
2.
Data Destination (파일, 모니터, 프린터, 메모리)
: 데이터가 최종적으로 도착하는 곳
ex) System 클래스의 InputStream 타입의 클래스 변수 : in
PrintStream 타입의 클래스 변수 : out / err

Stream의 특징

1.
FIFO 구조
2.
단방향
3.
스트림에 들어간 데이터가 처리되기 전에는 스트림을 사용하는 스레드는 블럭킹 상태에 빠진다.
4.
유연한 구조

Stream의 구분

1.
스트림에서 다루는 데이터가 무엇이냐에 따른 구분
byte 기반 스트림 (1byte 단위로 데이터가 이동)
→ XXXInputStream/OutpusStream
Char 기반 스트림 (2byte 단위로 데이터가 이동)
→ XXXReader/Writer
2.
스트림 안에 들어온 데이터를 그대로 보내느냐, 아님 가공 절차를 거친 뒤 보내느냐에 따른 구분
Node 스트림 : 데이터 소스와 직접 연결 가능한 스트림
Filter 스트림 : 데이터 소스에 직접 연결은 불가능하고 데이터 소스에 직접 연결한 노드 스트림을 가공하는 역할
→ 따라서 노드 스트림과 연결해서 사용해야 함.