15장
1. Stream
I/O(Input/Output): 내부 또는 외부의 장치와 프로그램 간의 데이터를 주고받는 것
스트림(stream): 두 대상을 연결하고 데이터를 전송하는데 시용하는 연결 통로
14장의 데이터 소스를 추상화하고 다루는 스트림과 별개임에 유의
스트림은 단방향 통신만 가능
스트림은 먼저 보낸 데이터를 먼저 받게 되어있음
보조 스트림: 스트림의 기능을 보완하기 위한 스트림
실제로 데이터를 주고받는 스트림이 아니므로 데이터 입출력 기능은 없음
기반 스트림을 생성한 후 기반 스트림을 이용해서 보조 스트림 생성
1.1. 바이트 기반 스트림
FileInputStream
FileOutputStream
파일
ByteArrayInputStream
ByteArrayOutputStream
메모리(byte 배열)
PipedInputStream
PipedOutputStream
프로세스(프로세스 간 통신)
AudioInputStream
AudioOutputStream
오디오 장치
1.2. 문자 기반 스트림
FileInputReader
FileOutputWriter
파일
ByteArrayInputReader
ByteArrayOutputWriter
메모리(byte 배열)
PipedInputReader
PipedOutputWriter
프로세스(프로세스 간 통신)
AudioInputReader
AudioOutputWriter
오디오 장치
1.3. 보조 스트림
FilterInputStream
FilterOutputStream
필터를 이용한 입출력 처리
BufferedInputStream
BufferedOutputStream
버퍼를 이용한 입출력 성능 향상
DataInputStream
DataOutputStream
int, float와 같은 기본형 단위로 데이터 처리
SequenceInputStream
-
두 개의 스트림을 하나로 연결
LineNumberInputStream
-
읽어 온 데이터의 라인 번호를 키운트 (JDK 1.1부터 LineNumberReader로 대체)
ObjectInputStream
ObjectOutputStream
데이터를 객체 단위로 읽고 쓰는데 사용 주로 파일을 이용하며 객체 직렬화와 연관
-
PrintStream
버퍼를 이용하며 추가적인 print 관련 기능 (print, printf, println 메서드)
pushbackInputStream
-
버퍼를 이용해서 읽어 온 데이터를 다시 되돌림 (unread)
2. 직렬화
2.1. 직렬화와 역직렬화
직렬화(serialization): 객체를 데이터 스트림으로 만드는 것
역직렬화(deserialization): 데이터 스트림에서 객체를 만드는 것

2.2. 직렬화와 역직렬화의 예시
참고 자료
자바의 정석 - 도우출판
Last updated