I/O3: 보조스트림

I/O3: 보조스트림

I/O클래스의 구조와 스트림(Stream)

  • I/O클래스의 구조

https://estindev.tistory.com/entry/%EC%9E%90%EB%B0%94-IO-%EC%A0%95%EB%A6%AC




개념

  • 노드 스트림과 달리 노드에 직접 연결되지않고 다른 스트림과 연결되는 스트림.
  • 보조스트림 = 필터스트림 = 프로세싱스트림.
  • 상황에 따라 다르지만 일반적으로 노드스트림보다 500배 빠름
  • readLine() : 데이터를 한 줄씩 읽어서 리턴.
  • DataInputStream/DataOutputStream : 기본형과 문자열을 입출력하는 스트림(byte기반 노드 스트림)
  • ObjectInputStream/ObjectOutputStream : 객체를 입출력하는 스트림(byte기반 노드 스트림)




객체저장을 위한 스트림

직렬화와 역직렬화

  • 객체 전송시 필요한 것은 객체가 가진 데이터 즉 멤버변수.
  • 직렬화 : 객체이 멤버변수들을 전송위해 연속적인 데이터 형태로 변환화는 과정
    • 객체 –ObjectInputStream 직렬화–> 노드
  • 역직렬화 : 직렬화된 멤버변수 –ObjectOutputStream 역직렬화–> 객체
  • 직렬화되기 위한 클래스는 반드시 Serializable 인터페이스 구현.
  • 키워드 transient : 객체의 멤버변수 중 외부로 유출되지 말아야 할 멤버변수은 걍우 키워드 transient사용으로 직렬화에서 제외.
  • serialVersionUID : 직렬화 가능한 클래스에는 static final long타입의 serialVersionUID멤버 변수를 추가하는 것이 좋다.