¾Õ¿¡¼´Â °´Ã¼ Á÷·ÄÈÀÇ ±âº»ÀûÀÎ °³³ä°ú °£´ÜÇÑ ¿ø¸®¸¦ ¾Ë¾Æ º¸¾Ò½À´Ï´Ù. À̹ø Àý¿¡¼´Â ObjectOutputStream°ú ObjectInputStreamÀ» »ç¿ëÇØ¼ ½ÇÁ¦·Î °´Ã¼¸¦ ÆÄÀÏ¿¡ ÀúÀåÇÏ°í ´Ù½Ã °´Ã¼¸¦ º¹¿øÇÏ´Â ¹æ¹ý¿¡ ´ëÇØ ¾Ë¾Æº¸µµ·Ï ÇϰڽÀ´Ï´Ù. ±×¸®°í transient¸¦ »ç¿ëÇØ¼ ƯÁ¤ Çʵ尡 Á÷·ÄÈ µÇ´Â °ÍÀ» ¹æÁöÇÏ´Â ¹æ¹ý¿¡ ´ëÇØ »ìÆì º¸°Ú½À´Ï´Ù.
ÀÌ Àå¿¡¼´Â SerializableÀ» ÀÌ¿ëÇÑ °´Ã¼ Á÷·ÄÈÀÇ ±¸Çö¹æ¹ý¿¡ ´ëÇØ¼ ¾Ë¾Æ º¸µµ·Ï ÇϰڽÀ´Ï´Ù. ¿©·¯ºÐÀÌ ²À ±â¾ïÇÏ¼Å¾ß ÇÏ´Â °ÍÀº º¸³¾ °´Ã¼°¡ Á÷·ÄÈ µÇ¾î ÀÖÀ¸¸é µÈ´Ù´Â °ÍÀÔ´Ï´Ù. Àü¼ÛÀº ƯÁ¤ ÀåÄ¡¿¡ ¿¬°áµÇ¾î ÀÖ´Â ½ºÆ®¸²ÀÌ ¸ðµÎ ÇØ°áÇÕ´Ï´Ù. ¿ì¼± ÆÄÀÏÀ̳ª ³×Æ®¿÷¿¡ ½ºÆ®¸²À» »ý¼º ÇÑ ÈÄ °´Ã¼¸¦ º¸³¾ ¼ö ÀÖ´Â ½ºÆ®¸²À¸·Î º¯È¯À» ÇÕ´Ï´Ù. ±×¸®°í Á÷·ÄȵǾî ÀÖ´Â °´Ã¼¸¦ º¸³»¸é µË´Ï´Ù. ±× ¼ø¼¸¦ Á¤¸®ÇÏ¸é ´ÙÀ½°ú °°½À´Ï´Ù.
n ³×Æ®¿÷À̳ª ÆÄÀϵ ½ºÆ®¸²À» »ý¼ºÇÑ´Ù.
n »ý¼ºµÈ ½ºÆ®¸²À» Object½ºÆ®¸²À¸·Î º¯È¯ÇÑ´Ù.
n ÀԷ°ú Ãâ·Â½ºÆ®¸²Àº ObjectInputStream°ú ObjectOutputStreamÀÌ´Ù.
n Á÷·ÄÈµÈ °´Ã¼¸¦ °´Ã¼½ºÆ®¸²À» ÅëÇØ¼ Àü¼ÛÇÑ´Ù.
u ObjectOutputStream à writeObject(Á÷·ÄȵȰ´Ã¼)
n °´Ã¼ ½ºÆ®¸²À» ÅëÇØ¼ Á÷·ÄÈµÈ °´Ã¼¸¦ ¹Þ´Â´Ù.
u ObjectInputStream à readObject()
ÀÌ¿Í °°Àº ¼ø¼·Î °´Ã¼ Á÷·Äȸ¦ ±¸ÇöÇÕ´Ï´Ù. ½ºÆ®¸²Àº IO¿¡¼ Á¦°øÇØ Áֱ⠶§¹®¿¡ ¿©·¯ºÐÀº º¸³¾ °´Ã¼¸¸ »ý°¢ÇÏ½Ã¸é µË´Ï´Ù. ÀÚ ±×·¸´Ù¸é Á÷·ÄÈ °´Ã¼¸¦ ±¸ÇöÇØ º¸µµ·Ï ÇϰڽÀ´Ï´Ù. ¿©·¯ºÐÀÌ ÇÏ½Ç ÀÏÀº º¸³¾ °´Ã¼¿¡ impelements Serializable¸¸ ºÙÀÌ¸é µË´Ï´Ù.
SerialObject.java(Á÷·Äȸ¦ ±¸ÇöÇÑ °´Ã¼) |
import java.io.*; public class SerialObject implements Serializable{ private String name; // À̸§ private String dept; // ºÎ¼ private String title; // Á÷Ã¥ public SerialObject (String name, String dept, String title) { this.name = name; this.dept = dept; this.title = title; } public String toString(){ return name + ":" + dept + ":" + title; } } |
C:\JavaExample\12>javac SerialObject.java SerializableÀÎÅÍÆäÀ̽º´Â Ç¥½Ã ÀÎÅÍÆäÀ̽ºÀ̱⠶§¹®¿¡ ±¸ÇöÇØ¾ß ÇÏ´Â ¸Þ¼µå°¡ ¾ø½À´Ï´Ù. ÀÌ ÀÎÅÍÆäÀ̽º´Â ´ÜÁö ºÙ¿©¸¸ ÁÖ¸é µË´Ï´Ù. |
À§ÀÇ ¿¹Á¦´Â ³Ê¹«³ª ´Ü¼øÇÑ ¿¹Á¦ÀÔ´Ï´Ù. ´ÜÁö ´Ù¸¥ °ÍÀº implements SerializableÀÌ ºÙ¾ú´Ù´Â °Í ¹Û¿¡´Â º°´Ù¸¦ °Ô ¾ø½À´Ï´Ù. ÀÚ ÀÌÁ¦ ÀÓÀÇÀÇ ÆÄÀÏ¿¡ °´Ã¼ ½ºÆ®¸²À» ¿¬°áÇÏ¿© °´Ã¼¸¦ ÀÐ°í ±â·ÏÇØ º¸µµ·Ï ÇϰڽÀ´Ï´Ù. ¾Æ·¡ÀÇ ¿¹´Â °´Ã¼¸¦ ±â·ÏÇÑ ÈÄ ´Ù½Ã Àо´Â ¿¹Á¦¸¦ º¸¿© ÁÖ°í ÀÖ½À´Ï´Ù.
SerialObjectTest.java(°´Ã¼Á÷·Äȸ¦ ÀÌ¿ëÇÏ¿© ÆÄÀÏ¿¡ °´Ã¼ ±â·ÏÇϰí Àоî¿À±â) |
import java.io.*; public class SerialObjectTest { public static void main(String[] args) throws Exception { FileOutputStream fos = new FileOutputStream("object.txt"); ObjectOutputStream oos = new ObjectOutputStream(fos); SerialObject so1 = new SerialObject("È«±æµ¿", "Ãѹ«ºÎ", "°úÀå"); SerialObject so2 = new SerialObject("±è»ñ°«", "¿µ¾÷ºÎ", "°úÀå"); SerialObject so3 = new SerialObject("¾ÏÇà¾î", "ÀλçºÎ", "°úÀå"); oos.writeObject(so1); oos.writeObject(so2); oos.writeObject(so3); oos.close(); FileInputStream fis = new FileInputStream("object.txt"); ObjectInputStream ois = new ObjectInputStream(fis); SerialObject rso1 = (SerialObject)ois.readObject(); SerialObject rso2 = (SerialObject)ois.readObject(); SerialObject rso3 = (SerialObject)ois.readObject(); System.out.println(rso1.toString()); System.out.println(rso2.toString()); System.out.println(rso3.toString9)); ois.close(); } } |
C:\JavaExample\12>javac SerialObjectTest.java C:\JavaExample\12>java SerialObjectTest È«±æµ¿:Ãѹ«ºÎ:°úÀå ±è»ñ°«:¿µ¾÷ºÎ:°úÀå ¾ÏÇà¾î:ÀλçºÎ:°úÀå |
¸ÕÀú, object.txtÆÄÀÏ¿¡ ÆÄÀÏÃâ·Â½ºÆ®¸²À» »ý¼ºÇÕ´Ï´Ù. ±×¸®°í ÀÌ ÆÄÀÏÃâ·Â½ºÆ®¸²À» ObjectÃâ·Â½ºÆ®¸²À¸·Î º¯È¯ÇÕ´Ï´Ù. ´ÙÀ½°ú °°Àº ÄÚµå·Î Ç¥ÇöÇÒ ¼ö ÀÖ½À´Ï´Ù.
n FileOutputStream fos = new FileOutputStream("object.txt");
n ObjectOutputStream oos = new ObjectOutputStream(fos);
½ºÆ®¸²À» ¿¾ú´Ù¸é implements Serializable·Î ±¸ÇöµÈ °´Ã¼¸¦ ¸¸µé¾î¾ß°ÚÁÒ. À§ÀÇ ¿¹Á¦¿¡¼´Â 3°³ÀÇ °´Ã¼¸¦ Áغñ Çß½À´Ï´Ù.
n SerialObject so1 = new SerialObject("È«±æµ¿", "Ãѹ«ºÎ", "°úÀå");
n SerialObject so2 = new SerialObject("±è»ñ°«", "¿µ¾÷ºÎ", "°úÀå");
n SerialObject so3 = new SerialObject("¾ÏÇà¾î", "ÀλçºÎ", "°úÀå");
±×¸®°í ÀÌ °´Ã¼¸¦ object.txtÆÄÀÏ¿¡ ±â·ÏÇÏ´Â ºÎºÐÀº ´ÙÀ½°ú °°½À´Ï´Ù °´Ã¼°¡ 3°³ÀÌ´Ï 3¹ø ±â·Ï ÇØ¾ß °ÚÁÒ.
n oos.writeObject(so1);
n oos.writeObject(so2);
n oos.writeObject(so3);
¸¶Áö¸·À¸·Î Ãâ·Â½ºÆ®¸²À» ´Ý½À´Ï´Ù. ¼Ò½ºÀÇ ÀÌ ºÎºÐ±îÁö ¼öÇà µÇ¸é object.txt°¡ ¸¸µé¾îÁö°í °´Ã¼ 3°³°¡ ¼ø¼´ë·Î ±â·ÏµÇ°Ô µË´Ï´Ù. ¼Ò½º¸¦ °£´ÜÇÏ°Ô Çϱâ À§Çؼ ¹Ù·Î ÀÔ·ÂÇÑ °´Ã¼¸¦ »Ìµµ·Ï ÇϰڽÀ´Ï´Ù. ¿ì¼± °´Ã¼¸¦ ÀÐ¾î ³»±â À§Çؼ object.txtÆÄÀÏ¿¡ ÆÄÀÏÀԷ½ºÆ®¸²À» »ý¼ºÇÕ´Ï´Ù. ±×¸®°í »ý¼ºµÈ ÆÄÀÏÀԷ½ºÆ®¸²À» ObjectÀԷ½ºÆ®¸²À¸·Î º¯È¯ÇÕ´Ï´Ù.
n FileInputStream fis = new FileInputStream("object.txt");
n ObjectInputStream ois = new ObjectInputStream(fis);
º¯È¯µÈ ObjectÀԷ½ºÆ®¸²À¸·Î °´Ã¼¸¦ Àоî³À´Ï´Ù. ¾Õ¿¡¼ 3°³ ÀÔ·ÂÇßÀ¸´Ï 3¹ø¸¸ ÀÐ¾î ³»µµ·Ï ÇÏÁÒ. ±×¸®°í ObjectÀԷ½ºÆ®¸²À¸·Î ÀоúÀ» ¶§ ¹ÝȯÇüÀÌ ObjectÇüÀ̱⠶§¹®¿¡ ¿©·¯ºÐÀº °Á¦ Downcasting½ÃÄÑ¾ß ÇÕ´Ï´Ù.
n SerialObject rso1 = (SerialObject)ois.readObject();
n SerialObject rso2 = (SerialObject)ois.readObject();
n SerialObject rso3 = (SerialObject)ois.readObject();
½ÇÁ¦ ÀÌ °´Ã¼µéÀ» ÀÌ¿ëÇÒ ¼ö ÀÖ´ÂÁö SerialObjectŬ·¡½ºÀÇ ¸â¹ö¸Þ¼µå¸¦ È£ÃâÇØ º¸µµ·Ï ÇϰڽÀ´Ï´Ù.
n System.out.println(rso1.toString());
n System.out.println(rso2.toString());
n System.out.println(rso3.toString());
¸¶Áö¸·À¸·Î ObjectÀԷ½ºÆ®¸²À» ´ÝÀ¸½Ã¸é ¸ðµç ÀÛ¾÷Àº ³¡ÀÌ ³³´Ï´Ù. À§ÀÇ ¿¹Á¦¿¡¼ ObjectOutputStream°ú ObjectInputStream¿¡ ´ëÇØ¼ Á¶±Ý ´õ ¾Ë¾Æ º¸µµ·Ï ÇϰڽÀ´Ï´Ù. ±×¸®°í Object½ºÆ®¸²ÀÇ ³×Æ®¿÷ ¿¹Á¦¸¦ º¸°í ½ÍÀ¸½Ã¸é äÆÃÀÇ µ¥ÀÌÅÍ Àü¼ÛºÎºÐÀ» ÂüÁ¶ÇϽñ⠹ٶø´Ï´Ù.
jabookÀúÀÚ¸íÇÔ |
Á¦¸ñ:¼Ò¼³°°ÀºÀÚ¹Ù3ºÎ ÀúÀÚ:ÃÖ¿µ°ü |