객체 저장(OutputStream, InputStream, BufferStream)
객체를 저장하는 방법에는 2가지가 있습니다.
《저장》
- 직렬화를 사용하여 저장
- 자바 프로그램에서만 사용한다는 조건에서 사용합니다.
- 클래스를 직렬화 할려면 implements Serializable를 사용해야 됩니다.
- static 변수는 직렬화 하지 못합니다.
- 클래스 중에 직렬화를 하고 싶지 않은 변수에는 transient를 사용합니다.
- 문자로 저장
- 타 프로그램에서도 저장된 객체를 사용 할 수도 있을때 사용합니다.
◆ 직렬화를 사용할 경우
try { // "dg.ser"로 저장합니다. ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("dg.ser")); oos.writeObject(d); oos.close(); // 파일이름이 "dg.ser"인 파일을 가져옵니다. ObjectInputStream ois = new ObjectInputStream(new FileInputStream("dg.ser")); d = (DungeonGame)ois.readObject(); ois.close(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); }
《저장》
- FileOutputStream를 사용하여 바이트 형태로 저장합니다.
- ObjectOutputStream를 사용하여 직렬화 하여 저장합니다.
- ObjectInputStream를 닫아 줍니다. ObjectInputStream를 닫으므로서 밑에 있는 FileOutputStream는 자동으로 닫힙니다.
《가져오기》
- FileOutputStream를 사용하여 바이트 형태로 읽습니다.
- ObjectOutputStream를 사용하여 클래스를 찾아서 불러온 다음 저장되었던 인스턴스 변수값을 다시 대입합니다. 직렬화된 객체의 생성자는 실행되지 않습니다.
- ObjectInputStream를 닫아 줍니다. ObjectInputStream를 닫으므로서 밑에 있는 FileOutputStream는 자동으로 닫힙니다.
'개발 > Java' 카테고리의 다른 글
Java String, Long, ETC 변환 (0) | 2016.11.16 |
---|---|
[spring] log4j 설정 및 사용법 (0) | 2016.10.26 |
jar 관련 명령어 (0) | 2016.09.29 |