입출력 스트림
java.io 패키지에서 자바의 기본적인 데이터 입출력 API를 제공한다.
- 입출력 스트림의 단위는 byte
- Reader/Writer의 단위는 문자
- 위의 두 종류가 최상위 클래스들이고, 그 아래는 하위클래스들
개념
바이트 기반 스트림과 문자 기반 스트림
- 바이트 기반 스트림은 그림, 멀티미디어, 문자 등을 포함하며, 문자 기반은 문자만 포함한다.
InputStream
- 추상 클래스
주요 메소드
- read : 1바이트
- 읽은 바이트를 배열 b에 저장하고, 읽은 바이트 수를 리턴
- 배열 b를 off인덱스에서 읽어서 len에서 지정한 수만큼 리턴(len이 8개고 5개를 읽었다면 5만 리턴)
<예제>
위의 코드를 간단하게 처리한는 방법도 있다
이처럼 while문과 if문 안에 있던 식을 조건식 안에 집어넣으면 압축이 가능하다.
<예제>
OutputStream
- 추상 클래스
주요 메소드
- 리턴 타입이 없다
- 1바이트 보내는것(write)
- 배열을 보냄 - 배열은 모든 바이트
- b바이트의 배열에 인덱스 off에서 해당하는 길이만큼 보냄
- 자원 반납
- flush : 내가 보내야할 문자들이 다 안갈때 이걸 쓰면 한꺼번에 남은걸 다 출력
<예제>
<예제>
<예제>
Reader
- Reader은 추상 클래스 하위는 일반 클래스
주요 메소드
- 1개의 문자
- char배열의 문자 수를 리턴
- cbuf에서 읽은 인덱스로 부터 인덱스의 개수를 리턴
<예제>
<예제>
Writer
- Writer은 추상 그 아래는 일반 클래스
주요 메소드
- 리턴타입은 없음
-
- 문자를 묶어서 배열로
- cbuf배열을 off인덱스에서 길이만큼 출력
- 모든 문자열을 보냄
- 문자열을 off인덱스에서 길이만큼 출력
<예제>
<예제>
<예제>
<예제>