Notice
Recent Posts
Recent Comments
Link
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

붓, 그리다

입출력(직렬화) 본문

JAVA/Basic

입출력(직렬화)

붓그린 2017. 6. 16. 17:14

[ 입력을 받아 파일로 저장 ]
1) 자료형 상관없이 문자열 저장 : FileOutputStream, FileWriter
2) 자료형에 맞게 저장 : DataInputStream, DataOutputStream
3) 객체를 저장, 불러오기 : ObjectInputStream(객체 불러오기), ObjectOutputStream(객체 저장)
- writeObject(저장시킬 객체명), readerObject() -> 객체 직렬화(Spring)와 연결



[ 직렬화 ]
- 메모리상의 저장된 객체(=ObjectOutputStream)를 파일로 저장
<-> 역직렬화 ObjectInputStream 
- 네트워크 전송도 가능



1. 객체 만들기 : 직렬화가 가능한 클래스
- 객체를 직렬화할 때 올바르게 저장되는 객체를 만들 수 있는 클래스

class 클래스명 implements Serializable{}

- Serialiazalbe 인터페이스는 추상메서드가 없음
- 파일로 저장될 때 객체형이 Object 자료형으로 변환되어 저장이 된다.
- 직렬화된 객체를 다시 원래상태로 되돌리기 위해서 원래객체형으로 형변환해야한다.

*인터페이스 종류
1) 직렬화 목적으로 만들어진 인터페이스
- 추상메서드가 없음 -> 설계목적이 아님
- Maker Interface(마커 인터페이스)

2) 설계목적으로 만들어진 인터페이스

3) 이벤트 처리 목적으로 만들어지 인터페이스
- ActionListener~


[ Object 객체는 직렬화할 수 없다 ]

clasee Object implements Serializable{}

-> 모든 클래스가 다 자동으로 객체직렬화 되기 때문(상속때문)
 



EX1) 직렬화하여 파일 저장

package j0616;

import java.io.*;

// 조건) 객체를 파일로 저장 -> USB -> 전송(네트워크로 전송(파일첨부))
// 직렬화가 가능한 클래스

class Person implements Serializable{
        String name;
        int age;
        String addr;
}

public class Object {

        public static void main(String[] args) throws Exception {
                // TODO Auto-generated method stub
                Person p=new Person();
                p.name="홍길동";
                p.age=34;
                p.addr="경기도 광명시";

                //파일로 저장 : ObjectOutputStream > FileOutputStream
                FileOutputStream fos=
                                new FileOutputStream("c:/3.java/object.txt"); //파일 객체 생성
                ObjectOutputStream oos=new ObjectOutputStream(fos);

                //저장하기
                oos.writeObject(p);
                //매개변수가 object인 자료형은 모든 객체를 저장이 가능하게 만들기 위함
                //파일로 저장될 때 Person-> Object형으로 변환돼어 저장된다.
                oos.close();
        }

}



EX2)  원래 상태로 되돌리기

// 파일로 저장된 객체 가져오기
                FileInputStream fis=
                                new FileInputStream("c:/3.java/object.txt");
                ObjectInputStream ois=new ObjectInputStream(fis);
                // 읽어들이기(꺼내오기)
                // 직렬화된 객체를 다시 되돌리기 위해 원래 객체형으로 형변환
                Person p2=(Person)ois.readObject();
                System.out.println("이름 : "+p2.name);
                System.out.println("나이 : "+p2.age);
                System.out.println("주소 : "+p2.addr);




2. 직렬화 대상에서 제외

transient 멤버변수 // 저장이 안됨(=null)


class Person implements Serializable{
        String name;
        int age;
        transient String addr; // 저장이 안됨 =null
}

====콘솔출력
이름 : 홍길동
나이 : 34
주소 : null






1) System.in : 객체(InputStream 표준입력장치)


2) System.out : 멤버변수이면서 객체(PrintStream)








'JAVA > Basic' 카테고리의 다른 글

상속, 오버라이딩  (0) 2017.06.16
쓰레드  (0) 2017.06.16
입출력(스트림) 2  (0) 2017.06.16
입출력(스트림) 1  (0) 2017.06.16
객체형변환, 라이브러리  (0) 2017.06.16
Comments