Input과 Output을 위해 자바에서 제공하는 클래스
모든 스트림은 단방향이라서 입출력을 동시에 수행하려면 2개의 스트림이 필요하다.
InputStream : 최상위 클래스
int read(): 스트림에서 1byte 읽어옴, 더 이상 읽을 수 없을 때는 -1 return
int read(byte[] b): 스트림에서 1byte 읽어와서 byte[]에 저장하고 읽은 수 만큼 return
int read(byte[] b, int start, int length): 스트림에서 length만큼 읽어와서 byte[start]부터 length까지 저장하고 읽은 수 만큼 return
void close()
OutputStream
void write(int b): 출력 스트림으로 1byte 전송
void write(byte[] b): 출력 스트림에 byte[]의 모든 byte보냄
void write(byte[]b, int start, int length): byte[start]부터 length까지 전송
void flush(): Buffer에 남은 모든 byte 출력
close()
Reader
int read(): 스트림에서 한 개의 문자 읽어옴, 더 이상 읽을 수 없을 때는 -1 return
int read(char[] c): 스트림에서 문자들 읽어와서 char[]에 저장하고 읽은 수 만큼 return
int read(char[] b, int start, int length): 스트림에서 length만큼 읽어와서 char[start]부터 length까지 저장하고 읽은 수 만큼 return
void close()
Writer
void write(int b): 출력 스트림으로 한 개의 문자 전송
void write(char[] b): 출력 스트림에 char[]의 모든 문자보냄
void write(char[]b, int start, int length): char[start]부터 length까지 전송
void write(String str): 문자열 전송
void write(String str, int start, int length): str의 start부터 length까지 보냄
void flush(): Buffer에 남은 모든 문자열 출력
close()
파일로부터 byte 단위로 읽을 때 사용
InputStream의 하위 클래스
파일을 byte 단위로 저장할 때 사용
OutPutStream의 하위 클래스
FileReader
파일로부터 문자 단위로 읽을 때 사용
Reader의 하위 클래스
FileWriter
파일을 문자 단위로 저장할 때 사용
Writer 하위 클래스
실제 데이터를 주고 받을 수 없는 스트림으로 기반 스트림을 생성 후 보조 스트림을 생성하여 스트림의 기능을 향상시키거나 새로운 기능을 추가하기 위해서 사용한다.
문자 변환 보조 스트림
입출력 횟수 줄여 성능 향상 시키는 보조 스트림
기본형의 데이터의 정보를 입출력할 때 사용
객체 → 역직렬화 → 객체 → 직렬화 → 객체
객체 출력을 위해 객체의 데이터를 byte[]로 변경하는 것
private필드를 포함한 모든 필드를 byte로 변환하지만 static이나 transient 붙은 필드는 직렬화 제외
파일에 저장되어 있거나 네트워크에서 전송된 객체를 읽을 수 있는데, 입력 스트림으로부터 읽어들인 연속적인 바이트를 객체로 복원하는 것