-
[Java] 자바 입출력 - 직렬화(Serialization)Just do it. 2020. 9. 8. 15:56반응형
인스턴스의 상태를 그대로 저장하거나, 네트워크로 전송하고 이를 다시 복원(DeSerialization)하는 방식
ObjectInputStream ObjectOutputStream 이란 보조스트림을 이용하여 구현 할 수 있음
Java뿐만 아니라 다른 언어에서도 지원하는 기술.
Java에서의 Serialization 인터페이스
직렬화는 인스턴스의 내용이 외부 (파일,네트워크)로 유출 되는 것이므로 프로그래머가 객체의 직렬화 가능 여부를 명시한다.
구현 코드가 없는 mark interface
아래에 코드로 Animal이라는 class는 직렬화가 가능하다. 라고 명시하여줌.
명시하지 않으면, 직렬화가 되지 않음.
Animal 이라는 Class안에 멤버변수 앞에 transiant 라는 키워드를 작성하여 주면 이변수는 직렬화 하지 말아라 라고 명시해줄 수 있음.
아래는 간단한 테스트 코드 예제입니다.
class Animal implements Serializable { ... String name; String gender; String kinds; }
public static void main(String[] args) { Animal ani1 = new Animal("호돌이", "수컷", "포유류"); Animal ani2 = new Animal("심바", "수컷", "포유류"); Animal ani3 = new Animal("따식이", "수컷", "포유류"); try (FileOutputStream fos = new FileOutputStream("test.txt"); ObjectOutputStream oos = new ObjectOutputStream(fos)) { oos.writeObject(ani1); oos.writeObject(ani2); oos.writeObject(ani3); } catch (IOException e) { System.out.println(e); } try (FileInputStream fis = new FileInputStream("test.txt"); ObjectInputStream ois = new ObjectInputStream(fis)) { Animal a1 = (Animal) ois.readObject(); Animal a2 = (Animal) ois.readObject(); System.out.println(a1); System.out.println(a2); } catch (IOException e) { System.out.println(e); } catch (ClassNotFoundException e) { System.out.println(e); } }
반응형'Just do it.' 카테고리의 다른 글
Lombok @Anotation (0) 2020.09.21 [Springboot] 스프링 부트란? (1) 2020.09.19 [Java] 데코레이터 패턴 (Decorator Pattern) (0) 2020.09.08 [Java]Singleton Pattern에 대하여 (0) 2020.06.28 REST란? REST API,RESTful 에 대하여. (0) 2020.06.10