★ ObjectOutputStream / ObjectInputStream 클래스

자바에서 객체 단위의 입출력하기 위한 ObjectOutputStream 클래스와 ObjectInputStream 클래스를 제공


파일이나 DB에 객체를 저장하거나 읽을 수 있고, 네트워크를 통해서 객체를 송 수신 할 수 있다


객체를 입출력 할 때는 직렬화(Serialization)된 데이터를 사용


직렬화된 데이터 : 객체를 순차적인 바이트로 표현한 데이터


객체를 직렬화된 데이터로 표현함으로서 객체의 영속성(Object Persistence)을 보장


영속성 : 객체가 자신의 상태를 기록해 두어 다음 기회에 또는 다른 환경에서 재생될 수 있는 능력을 의미한다


★ ObjectOutputStream 클래스 : 자바의 기본 자료형과 객체를 직렬화된 데이터로 저장하기 위해 사용되는 클래스


생성자
 ObjectOutputStream(OutputStream outputStream)


★ ObjectOutputStream 클래스의 주요 메소드
void close()     스트림을 닫는다.
void flush()     버퍼의 모든 내용을 출력한다
void wrie(byte[] b, index,int size)  바이트 배열 b의 index 위치부터 size int 만큼을 출력한다
void write(byte[] b)    바이트 배열 b를 출력한다
void write(int ontbyte)    int 값의 하위 한 바이트를 출력한다
void writeBoolean(boolean data)  boolean 값을 출력한다
void writeByte(int data)   한 바이트를 출력한다
void writeBytes(String str)  str 문자열을 연속된 바이트로 출력한다
void writeChar(int data)   한 문자를 출력한다
void writeChars(String str)  str 문자열을 연속된 문자로 출력한다
void writeDouble(double data)  double 값을 출력한다
void writeFloat(float data)  float 값을 출력한다
void writeInt(int data)   int 값을 출력한다
void writeLong(long data)  long 값을 출력한다
void writeObject(Object obj) 객체를 출력한다
void writeShort(int data)  short 값을 출력한다
void writeUTF(String data)  문자열을 UTF 인코딩으로 출력한다

★ ObjectInputStream 클래스 : 직렬화된 데이터로부터 역직렬화(Deserialization)를 수행하여 원래의 데이터로 복구하는 기능을 제공


생성자
 ObjectInputStream(InputStream inputStream)


★ ObjectInputStream 클래스의 주요 메소드
 void close()    스트림을 닫는다
 int read()     한 바이트를 읽는다
 int read(byte[] b, int off, int len)   바이트 배열로 읽어 들인다
 boolean readBoolean()    boolean 값을 읽는다
 byte readByte()    한 바이트를 읽는다
 char readChar()    문자를 읽는다
double readDouble()   double 값을 읽는다
float readFloat()   float 값을 읽는다
int readInt()    int 값을 읽는다
long readLong()    long값을 읽는다
Object readObject()   객체를 읽는다
short readShort()   short 값을 읽는다
int readUnsignedByte()  부호 없는 바이트 값을 읽는다
int readUnsignedShort()   부호 없는 short 값을 읽는다
String readUTF()   UTF 인코딩을 읽어서 문자열 타입으로  반환

 

/******************************************************************************
*   파일      : ObjectPersistenceWrite.java
*   용도      : ObjectPersistenceWrite
*   작성자   : 성홍제
*   작성일   : 2006. 08. 02
*   Version : 1.0
******************************************************************************/
package FileIO;
import java.util.*;
import java.io.*;
public class ObjectPersistenceWrite
{
    /// Fields
    Date s_date;
    ObjectOutputStream objectout;
   
    /// Constructor
    public ObjectPersistenceWrite()
    {
        s_date = new Date();  // 생성자에서 날짜 객체를 생성
        objectout = null;
    }
   
    /// Method
    public void write(String f_name)
    {
        try
        {
            FileOutputStream f_out = new FileOutputStream(f_name);
            // 파일에 저장하기 위해 파일 출력 스트림 객체 생성
            objectout =new ObjectOutputStream(f_out);
            // 객체를 파일에 출력하기 위한 스트림 객체 생성
            System.out.println("직렬화된 데이터로 저장된 Date 객체 : "+ s_date);
            objectout.writeObject(s_date);
            // writeOjbect() 메소드를 이용하여 Date 객체를 직렬화된 데이터로
            // 파일에 저장                
            objectout.close();
        }
        catch(IOException e)
        {
            e.printStackTrace();
        }
    }
   
    /// Main Method
    public static void main(String args[])
    {
        ObjectPersistenceWrite od = new ObjectPersistenceWrite();
        od.write("d:/s_data.dat");    
    }
}
 
 

/******************************************************************************
*   파일      : ObjectPersistenceRead.java
*   용도      : ObjectPersistenceRead
*   작성자   : 성홍제
*   작성일   : 2006. 08. 02
*   Version : 1.0
******************************************************************************/
package FileIO;
import java.util.*;
import java.io.*;
public class ObjectPersistenceRead
{
    Date s_date;
    Date new_date;
    ObjectInputStream objectin;
     
    public ObjectPersistenceRead()
    {
        new_date = new Date();
        objectin = null;
    }
     
    public void read(String f_name)
    {
        try
        {
            FileInputStream f_in = new FileInputStream(f_name);
            // 직렬화된 데이터 파일로부터 데이터를 읽기 위한 스트림 객체 생성
            objectin = new ObjectInputStream(f_in);                  
            s_date = (Date)objectin.readObject();   // 객체를 읽어 Date 타입으로 형 변환
            System.out.println("직렬화된 데이터로부터 읽은 Date 객체 : " + s_date);
            System.out.println("현재 시점에서 생성된 Date 객체 : " + new_date);
        }
        catch(IOException e)
        {
            e.printStackTrace();
        }
        catch(ClassNotFoundException nfe)
        {
            nfe.printStackTrace();
        }
    }
     
    public static void main(String args[])
    {
        ObjectPersistenceRead id = new ObjectPersistenceRead();
        id.read("./s_data.dat");           // 직렬화된 파일로부터 읽는다
    }
}

'프로그래밍 > Java' 카테고리의 다른 글

01 Network 첫시간...  (0) 2007.11.27
05 문자 단위 입출력  (0) 2007.11.27
05 3일째...  (0) 2007.11.27
04 입출력  (0) 2007.11.27
03 임시파일  (0) 2007.11.27