모든 바이트 기반 출력 스트림 클래스는 OutputStream
클래스를 상속매개 변수로 주어지는 int(4byte)에서 끝 1byte만 출력 스트림으로 보내는 write(int b) 메소드매개 값 배열의 모든 바이트를 출력 스트림으로 보내는 write(byte[]
b) 메소드매개 값 배열의 b[off] 부터 len
개의 바이트를 보내는 write(byte[] b, int off, int len) 메소드
2. 바이트 입력 스트림: InputStream
모든 바이트 기반 입력 스트림 클래스는 InputStream 클래스를
상속입력 스트림으로부터 1byte를 읽고 int(4byte) 타입으로 반환하는 read() 메소드
반환된 4byte 중 마지막 1byte에만 데이터 포함
입력 스트림으로부터 바이트를 더 읽을 수 없다면 -1 반환
읽을 수 있는 마지막 바이트까지 반복해 1byte씩 읽기 가능
주어진 배열의 길이만큼 바이트를 읽고 해당 배열에 저장해 반환하는 read(byte[] b) 메소드주어진 배열의 b[off] 부터
len개 까지 저장해 반환하는 read(byte[] b, int
off, int len) 메소드
문자 기반 스트림
1. 문자 출력 스트림: Writer
모든 문자 기반 출력 스트림 클래스는 Writer 클래스를 상속매개 변수의 int(4byte)에서 끝 2byte(1개 문자)만 출력 스트림으로 보내는 writer(int c) 메소드매개 값 char[] 배열의 모든 문자를 출력 스트림으로 보내는 write(char[] cbuf) 메소드매개 값 배열의 char[off] 부터 len 개의 문자를 보내는 write(char[] cbuf, int off,
int len) 메소드문자열 전체 write(String str) / off 순번부터
len개 write(String str, int off, int
len) 메소드
2. 문자열 입력 스트림: Reader
모든 문자 기반 입력 스트림 클래스는 Reader 클래스를 상속입력 스트림으로부터 1개의 문자(2byte)를
읽고 int(4byte) 타입으로 반환하는 read() 메소드
반환된 4byte 중 마지막 2byte에 데이터 포함
반환된 int 값을 char 타입으로 변환해 문자 얻기 가능
입력 스트림으로부터 문자를 더 이상 읽을 수 없다면 -1 반환
읽을 수 있는 마지막 문자까지 반복해 한 문자 씩 읽기 가능
배열의 길이만큼 문자를 읽고 해당 배열에 저장, 문자 수를 반환하는
read(char[] cbuf) 메소드배열에 cbuf[off] 부터 len개 문자 저장, len 값을 반환하는 read(char[] cbuf, int off, int len) 메소드
보조 스트림
보조 스트림
다른 스트림과 연결되어 여러 가지 편리한 기능을 제공
자체적으로 입출력이 불가능해 바이트/문자 기반 스트림 등에 연결해 사용
문자 변환, 입출력 성능 향상, 기본 타입 입출력 등의 기능 제공
프로그램은 입/출력 스트림을 직접 이용하지 않고 보조 스트림을 이용
연결될 스트림을 매개 값으로 넣어 보조 스트림 인스턴스 생성보조 스트림을 매개 값으로 넣어 연속적으로 연결 가능연속적으로 연결 예시
1. 문자 변환 보조 스트림
바이트 기반 출력 스트림을 문자 기반 출력 스트림 Writer로 변환하는
OutputStreamWriter바이트 기반 입력 스트림을 문자 기반 입력 스트림 Reader로 변환하는
OutputStreamReader
2. 성능 향상 보조 스트림
프로그램의 실행 성능은 입출력이 가장 늦은 장치 기준
입출력 소스와 직접 작업하지 않고 중간에 메모리 버퍼 추가로 성능 향상
출력 스트림에도 기본적으로 작은 버퍼가 있지만 성능이 낮음
바이트 기반 보조 스트림: BufferedInputStream, BufferedOutputStream
문자 기반 보조 스트림: BufferedReader, BufferedWriter
BufferedOutputStream
& BufferedWriter: 버퍼로 고속 전송 후 한 번에 보내기 (출력)BufferedInputStream & BufferedReader: 버퍼에
미리 데이터 저장 후 고속 읽기 (입력)BufferedReader는 라인 단위로 파일 문자열을 읽는 readLine() 메소드 제공
3. 기본 타입 입출력 보조 스트림
DataInputStream & DataOutputStream: 바이트
입출력 스트림에 연결해 기본 타입 입출력 가능기본 타입 입출력 보조 스트림 제공 메소드 (데이터 타입 별 크기가
다 달라 순서를 지켜 입출력)
4. 프린터 보조 스트림
PrintStream & PrintWriter: 바이트 & 문자 기반 출력 스트림과 연결해 프린터와 유사하게 출력출력 데이터 타입에 따른 오버로딩 (println() 메소드는 개행
문자 \n를 추가해 줄바꿈 가능)