I/O3: 보조스트림
I/O클래스의 구조와 스트림(Stream)
- I/O클래스의 구조
- 스트림 : 데이터의 소스에서 목적지까지 데이터를 이동시키는 일종의 통로.
- 스트림 종류 :
개념
- 노드 스트림과 달리 노드에 직접 연결되지않고 다른 스트림과 연결되는 스트림.
- 보조스트림 = 필터스트림 = 프로세싱스트림.
- 상황에 따라 다르지만 일반적으로 노드스트림보다 500배 빠름
- readLine() : 데이터를 한 줄씩 읽어서 리턴.
- DataInputStream/DataOutputStream : 기본형과 문자열을 입출력하는 스트림(byte기반 노드 스트림)
- ObjectInputStream/ObjectOutputStream : 객체를 입출력하는 스트림(byte기반 노드 스트림)
객체저장을 위한 스트림
직렬화와 역직렬화
- 객체 전송시 필요한 것은 객체가 가진 데이터 즉 멤버변수.
- 직렬화 : 객체이 멤버변수들을 전송위해 연속적인 데이터 형태로 변환화는 과정
- 객체 –ObjectInputStream 직렬화–> 노드
- 역직렬화 : 직렬화된 멤버변수 –ObjectOutputStream 역직렬화–> 객체
- 직렬화되기 위한 클래스는 반드시 Serializable 인터페이스 구현.
- 키워드 transient : 객체의 멤버변수 중 외부로 유출되지 말아야 할 멤버변수은 걍우 키워드 transient사용으로 직렬화에서 제외.
- serialVersionUID : 직렬화 가능한 클래스에는 static final long타입의 serialVersionUID멤버 변수를 추가하는 것이 좋다.