記錄

JAVA) 직렬화 본문

Computer language/JAVA

JAVA) 직렬화

surhommejk 2018. 2. 20. 09:19



/*
* 객체를 네트워크, 파일, 프로세스 간에 통신하기 위해 필요한 것이 직렬화다
*
* 직렬화는 객체를 분해해서 말 그대로 줄을 세워서 보내는 과정이다
* 객체를 문자열로 바꿔서 문자열을 직렬로 전송하는 것이다 (객체 -> 문자열)
*
* 반대로 받는 쪽에서는 분해되어 받았기 때문에 데이터를 활용하려면 역직렬화가 필요하다
* 직렬로 받은 문자열을 다시 객체로 전환하는 것이 역직렬화다 (문자열 -> 객체)
*
*/

public class UserInfo implements Serializable {
    public String name;
    public String pwd;
    public int age;
    
    public UserInfo() {}
    public UserInfo(String name , String pwd , int age) {
        this.name = name;
        this.pwd = pwd;
        this.age = age;
    }
    @Override
    public String toString() {
        return "UserInfo [name=" + name + ", pwd=" + pwd + ", age=" + age + "]";
    }
    
}

import java.io.*;

import kr.or.bit.UserInfo;

public class Ex15_ObjectDataOutPutStream {

    public static void main(String[] args) {

        String file = "UserInfo.txt";

        FileOutputStream fos = null;
        BufferedOutputStream bos = null;
        ObjectOutputStream oos = null;

        try {

            fos = new FileOutputStream(file);
            bos = new BufferedOutputStream(fos);
            oos = new ObjectOutputStream(bos);

            UserInfo u1 = new UserInfo("홍길동", "1234", 25);
            UserInfo u2 = new UserInfo("JK", "999", 30);

            oos.writeObject(u1);
            oos.writeObject(u2);

        } catch (Exception e) {
        } finally {
            try {
                oos.close();
                bos.close();
                fos.close();

            } catch (Exception e2) {
            }

        }

    } // end - main

} // end - class

import java.io.*;
import kr.or.bit.UserInfo;

import java.util.*;

public class Ex16_ObjectDataInPutStream {

    public static void main(String[] args) {

        FileInputStream fis = null;
        BufferedInputStream bis = null;
        ObjectInputStream ois = null;

        String file = "UserInfo.txt";

        ArrayList<UserInfo> list = new ArrayList();

        try {

            fis = new FileInputStream(file);
            bis = new BufferedInputStream(fis);
            ois = new ObjectInputStream(bis);
        
             //.readObject() 자체가 next기능을 가지고 있다
             UserInfo test1 = (UserInfo) ois.readObject();
             UserInfo test2 = (UserInfo) ois.readObject();
        
             System.out.println(test1.toString());
             System.out.println(test2.toString());
    
        } catch (Exception e) {
        } finally {
            try {

                ois.close();
                bis.close();
                fis.close();

            } catch (Exception e2) {
            }
        }

    } // end - main

} // end - class



'Computer language > JAVA' 카테고리의 다른 글

JAVA) HashMap의 value들을 ArrayList에 넣기  (0) 2018.02.21
JAVA) Thread  (0) 2018.02.20
JAVA) CMD내 TREE 기능 구현  (0) 2018.02.19
JAVA) Map.Entry와 entrySet()  (1) 2018.02.14
JAVA) Stream  (0) 2018.02.14
Comments