Java IO 5 - ObjectInputStream, ObjectOutputStream

    ObjectInputStream, ObjectOutputStream

    • 직렬화 가능한 대상을 읽고 쓸 수 있다.
    • 직렬화 가능한 대상은 기본형 타입 or java.io.Serializable 인터페이스를 구현하고 있는 객체이다.
    package com.example.IO;
    
    import java.io.Serializable;
    
    public class User implements Serializable {
        private String email;
        private String name;
        private int birthYear;
    
        public User(String email, String name, int birthYear) {
            this.email = email;
            this.name = name;
            this.birthYear = birthYear;
        }
    
        public String getEmail() {
            return email;
        }
    
        public String getName() {
            return name;
        }
    
        public int getBirthYear() {
            return birthYear;
        }
    
        @Override
        public String toString() {
            return "User{" +
                    "email='" + email + '\'' +
                    ", name='" + name + '\'' +
                    ", birthYear=" + birthYear +
                    '}';
        }
    }
    package com.example.IO;
    
    import java.io.*;
    import java.util.ArrayList;
    
    public class ObjectInputOutExam {
        public static void main(String[] args)throws Exception{
            User user1 = new User("hong@example.com","홍홍홍",1980);
            User user2 = new User("choi@example.com","최최최",1970);
            User user3 = new User("kim@example.com","김김김",1950);
            ArrayList<User> list = new ArrayList<>();
            list.add(user1);
            list.add(user2);
            list.add(user3);
    
            ArrayList<User> list2 = copy(list);
    
            for (int i = 0; i < list2.size(); i++){
                System.out.println(list2.get(i));
            }
    
            /*ArrayList<User> list2 = list;
    
            for (int i = 0; i < list2.size(); i++){
                System.out.println(list2.get(i));
            }*/
        }
    
        private static ArrayList<User> copy(ArrayList<User> list) throws IOException, ClassNotFoundException {
            ByteArrayOutputStream bout = new ByteArrayOutputStream();
            ObjectOutputStream out = new ObjectOutputStream(bout);
            out.writeObject(list);
            out.close();
            bout.close();
    
            byte[] array = bout.toByteArray();
    
            ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(array));
            ArrayList<User> list2 = (ArrayList)in.readObject();
            in.close();
            return list2;
        }
    }

    'JAVA' 카테고리의 다른 글

    네트워크 프로그래밍 - 1  (0) 2023.09.05
    쓰레드(Thread) 개념, 실행방법  (0) 2023.09.05
    Java IO 4 - DataInputStream, DataOutputStream  (0) 2023.08.24
    Java IO 3 -Reader, Writer  (0) 2023.08.24
    Java IO 2  (0) 2023.08.23

    댓글