입출력 스트림

- 스트림(Stream): 자바의 데이터 입출력 흐름으로, 스트림 방향에 따라 종류 결정
- 바이트 기반 스트림: 그림, 멀티미디어 등의 바이너리 데이터를 읽고 출력
- 문자 기반 스트림: 문자 데이터를 읽고 출력

바이트 기반 스트림
1. 바이트 출력 스트림: OutputStream




2. 바이트 입력 스트림: InputStream


- 반환된 4byte 중 마지막 1byte에만 데이터 포함
- 입력 스트림으로부터 바이트를 더 읽을 수 없다면 -1 반환
- 읽을 수 있는 마지막 바이트까지 반복해 1byte씩 읽기 가능


문자 기반 스트림
1. 문자 출력 스트림: Writer





2. 문자열 입력 스트림: Reader


- 반환된 4byte 중 마지막 2byte에 데이터 포함
- 반환된 int 값을 char 타입으로 변환해 문자 얻기 가능
- 입력 스트림으로부터 문자를 더 이상 읽을 수 없다면 -1 반환
- 읽을 수 있는 마지막 문자까지 반복해 한 문자 씩 읽기 가능


보조 스트림

- 다른 스트림과 연결되어 여러 가지 편리한 기능을 제공
- 자체적으로 입출력이 불가능해 바이트/문자 기반 스트림 등에 연결해 사용
- 문자 변환, 입출력 성능 향상, 기본 타입 입출력 등의 기능 제공
- 프로그램은 입/출력 스트림을 직접 이용하지 않고 보조 스트림을 이용



1. 문자 변환 보조 스트림


2. 성능 향상 보조 스트림
- 프로그램의 실행 성능은 입출력이 가장 늦은 장치 기준
- 입출력 소스와 직접 작업하지 않고 중간에 메모리 버퍼 추가로 성능 향상
- 출력 스트림에도 기본적으로 작은 버퍼가 있지만 성능이 낮음
- 바이트 기반 보조 스트림: BufferedInputStream, BufferedOutputStream
- 문자 기반 보조 스트림: BufferedReader, BufferedWriter



3. 기본 타입 입출력 보조 스트림


4. 프린터 보조 스트림


5. 객체 입출력 보조 스트림


System.in / System.out 필드



File 클래스




'Languages > Java' 카테고리의 다른 글
[HUFS/객체지향프로그래밍] #12 컬렉션 프레임워크 (0) | 2023.01.09 |
---|---|
[HUFS/객체지향프로그래밍] #11 스레드 (0) | 2023.01.06 |
[HUFS/객체지향프로그래밍] #10 기본 API 클래스 (0) | 2023.01.06 |
[HUFS/객체지향프로그래밍] #9 예외 처리 (1) | 2023.01.04 |
[HUFS/객체지향프로그래밍] #8 중첩 클래스와 중첩 인터페이스 (0) | 2023.01.04 |