📌 스트림 (Stream) / 버퍼 (Buffer) / 채널 (Channel) 기반의 I/O
입출력(I/O)
- 입력과 출력을 줄여 부르는 말
- 두 대상 간의 데이터를 주고 받는 것
스트림(Stream)
- 데이터를 운반(입/출력)하는데 사용되는 연결통로
- 하나의 스트림으로 입출력 동시에 수행할 수 없음(입력스트림, 출력스트림 따로따로)
보조스트림
- 스트림의 기능을 향상시키거나 새로운 기능을 추가하기 위해 사용하는 것.
- 독립적으로 입출력 수행 불가
버퍼(Buffer)
- 데이터를 한 곳에 저장시킨 후 한번에 보내는 방식
채널(Channel)
- 비동기적으로 입출력 동시에 가능
📌 바이트기반 스트림
- 입출력의 단위가 1byte
- InputStream과 OutputStream은 모든 바이트기반 스트림의 조상이다.
- 바이트단위로 데이터를 전송하며 입출력 대상에 따라 아래와 같이 나뉜다.
바이트기반 스트림 종류
- Input(Output)Stream
- ByteArrayInput(output)Stream : 바이트배열에 데이터를 입출력 하는데 사용되는 스트림
바이트기반 보조스트림
- FilterInput(Output)Stream : 모든 바이트기반 보조스트림의 최고조상
- BufferInput(Output)Stream : 입출력 효율을 높이기 위해 버퍼를 사용하는 보조스트림
- DataInput(Output)Stream : 기본형 단위로 읽고 쓰는 보조스트림
- SequenceInputStream : 여러 입력스트림을 연결해서 하나의 스트림처럼 다룰 수 있게 함
- PrintStream: 데이터를 다양한 형식의 문자로 출력하는 기능을 제공하는 보조스트림
📌 문자기반 스트림
- 입출력의 단위가 2byte
- 문자기반 스트림은 단순히 2byte 스트림 처리만을 의미하는 것이 아니라 + 인코딩을 포함한다.
문자기반 스트림은 자바에서 사용하는 유니코드간의 변환을 자동적으로 처리해준다.
- Reader, Writer은 모든 문자기반 스트림의 조상이다.
문자기반 스트림 종류
- Reader, Writer
- FileReader, FileWriter : 문자기반 파일 입출력
- PipedReader(Writer) : 프로세스 간의 통신에 사용
- StringReader(Writer) : 메모리 입출력에 사용
문자기반 보조스트림
- BufferedReader(Writer) : 입출력 효율을 높이기 위해 버퍼를 사용하는 보조스트림
- InputStreamReader, OutputStreamWriter : 바이트기반 스트림을 문자기반 스트림처럼 쓸 수 있게 해줌
- DataInput(Output)Stream : 기본형 단위로 읽고 쓰는 보조스트림
- SequenceInputStream : 여러 입력스트림을 연결해서 하나의 스트림처럼 다룰 수 있게 함
- PrintStream: 데이터를 다양한 형식의 문자로 출력하는 기능을 제공하는 보조스트림
📌 표준 입출력 (System.in, System.out, System.err)
표준 입출력
- 콘솔을 통한 데이터의 입출력
- JVM이 시작되면서 자동적으로 생성되는 스트림
System.in : 콘솔로부터 데이터를 입력받는데 사용
System.out : 콘솔로 데이터를 출력하는데 사용
System.err : 콘솔로 데이터를 출력하는데 사용
[참고]
- 자바의 정석
'스터디 > 2209_자바의정석' 카테고리의 다른 글
12주차 과제 : 애너테이션 (0) | 2022.10.25 |
---|---|
11주차 과제 : Enum (0) | 2022.10.18 |
10주차 과제 : 멀티쓰레드 프로그래밍 (0) | 2022.10.18 |
8주차 과제 : 인터페이스 (0) | 2022.10.11 |
7주차 과제 : 패키지 (0) | 2022.10.06 |
댓글