객체스트림 4

객체 스트림 - 예외

객체 스트림 객체 스트림의 사용은 쉽지만 기능은 강력하다. 그리고 객체 스트림은 RMI에 내부적으로 사용되는 기술이므로 객체 스트림을 잘 알고 있어야 한다. ※ 객체 스트림을 사용할 때 java.io.Serializable 인터페이스를 꼭 구현한다. (Serializable은 구현할 메소드가 없는 마크 인터페이스이다.) 자바 API의 java.lang 패키지에서 어떠한 클래스가 java.io.Serializable 인터페이스를 구현하는지 확인한다. java.io.Serialzable 인터페이스를 구현한 클래스는 다른 클래스의 필드일 경우, 포함하고 있는 클래스가 직렬화될 때 함께 직렬화할 수 있기 때문이다. 객체 스트림에서 주의해야 할 점은, 파일에 객체 기반 스트림으로 저장할 때 객체 여러 개를 이어서..

객체 스트림 - ObjectOutputStream와 ObjectInputStream

ObjectOutputStream 클래스의 생성자와 메소드 ObjectOutputStream 클래스는 객체를 직렬화하기 위해서 사용된다. ObjectOutputStream 클래스는 다음과 같이 선언되어 있다. public class ObjectOutputStream extends OutputStream implements ObjectOutput, ObjectStreamConstants ObjectOutputStream 클래스에 있는 생성자는 두 가지인데, 보통 OutputStream을 인자로 전달받는 생성자가 사용된다. public ObjectOutputStream(OutputStream out) throws IOException ObjectOutputStream의 생성자는 인자로 OutputStream..

객체 스트림 - 생각해볼 문제와 간단한 예제(Vector를 이용한 파일 저장, 읽기)

객체 스트림의 간단한 예제 Vector v = new Vector(); Vector v1 = new Vector(); Vector v2 = new Vector(); Vector v3 = new Vector(); v1.addElement(new String("data 1")); v1.addElement(new String("data 2")); v1.addElement(new String("data 3")); v2.addElement(new String("data 4")); v3.addElement(v2); v.addElement(v1); v.addElement(v3); Vector 네 개가 선언된 후, 각각의 Vector 안에 String과 Vector를 추가한다. 그림으로 표현하면 다음과 같다. 메모리에..

객체 스트림

객체 스트림 객체스트림은 객체를 전송시킬 수 있는 방법을 제공한다. 객체 안에 저장된 내용을 파일로 저장하거나 네트워크로 전송하려면 많은 노력이 필요하다. 객체에 있는 필드의 내용을 일일이 읽어 들여 하나씩 저장하거나 전송을 해야 하기 때문이다. 그리고 네트워크 프로그래밍 이라면 반대 쪽에서 전송한 데이터를 읽어 들이기 위해 전송한 순서대로 읽어 들여야 한다는 번거로움도 있다. 이런 문제를 쉽게 해결할 수 있게 해주는 것이 객체 스트림이다. 그렇지만 객체 스트림의 경우에는 마샬링(marshaling)과 언마샬링(unmarshaling)이라는 작업을 해야하므로 추가적인 과부하가 발생할 수 있다는 문제가 있다 하지만 요즘의 프로그래밍의 추세는 과부하보다는 조먿 손쉬움 프로그래밍 좀더 쉽게 유지보수 할 수 있..