JavaTM 2 Platform
Standard Ed. 5.0

java.io
Ŭ·¡½º ObjectInputStream

java.lang.Object 
  »óÀ§¸¦ È®Àå java.io.InputStream 
      »óÀ§¸¦ È®Àå java.io.ObjectInputStream
¸ðµç ±¸ÇöµÈ ÀÎÅÍÆäÀ̽º:
Closeable, DataInput, ObjectInput, ObjectStreamConstants

public class ObjectInputStream
extends InputStream
implements ObjectInput, ObjectStreamConstants

»çÀü¿¡ ObjectOutputStream¸¦ »ç¿ëÇØ ÀÛ¼ºµÈ ¿ø½ÃÀû µ¥ÀÌÅÍ¿Í ¿ø½ÃÀû ¿ÀºêÁ§Æ®¸¦ Á÷·ÄÈ­ º¹¿øÇÕ´Ï´Ù.

ObjectOutputStream ¿Í ObjectInputStream´Â FileOutputStream ¶Ç´Â FileInputStream ¿Í ÇÔ²² »ç¿ëÇϸé, ¾îÇø®ÄÉÀ̼ǿ¡ ¿ÀºêÁ§Æ®ÀÇ ±×·¡ÇÁ¸¦ À§ÇÑ Áö¼ÓÀûÀÎ ½ºÅ丮Áö¸¦ Á¦°øÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. ObjectInputStream´Â »çÀü¿¡ Á÷·ÄÈ­ µÈ ¿ÀºêÁ§Æ®¸¦ ¹ÙÅÁÀ¸·Î µÇµ¹¸®±â À§Çؼ­ »ç¿ëÇÕ´Ï´Ù. ´Ù¸¥ »ç¿ë ¹æ¹ýÀ¸·Î¼­´Â ¼ÒÄÏ ½ºÆ®¸²ÀÇ »ç¿ë¿¡ ÇÑ, È£½ºÆ® »çÀÌ¿¡¼­ÀÇ ¿ÀºêÁ§Æ®ÀÇ ¼ö¼ö³ª, ¸®¸ðÆ® Åë½Å ½Ã½ºÅÛ¿¡ À־ÀÇ ¼Ó¼ºÀ̳ª ÆÄ¶ó¹ÌÅÍÀÇ Á¤·ÄÀ̳ª Á¤·Ä ÇØÁ¦°¡ ÀÖ½À´Ï´Ù.

ObjectInputStream´Â ½ºÆ®¸²·ÎºÎÅÍ ÀÛ¼ºµÈ ¿ÀºêÁ§Æ® ±×·¡ÇÁ¿¡ À־ÀÇ ¸ðµç ÇüÅÂÀÇ ¿ÀºêÁ§Æ®°¡, Java °¡»ó ¸Ó½Å¿¡ Á¸ÀçÇϴ Ŭ·¡½º¿¡ È®½ÇÈ÷ ¼º³É Çϵµ·Ï ÇÕ´Ï´Ù. Ŭ·¡½º´Â Ç¥ÁØÀÇ µµ±¸ ¸¦ »ç¿ëÇØ Çʿ信 µû¶ó¼­ ·Îµå µË´Ï´Ù.

½ºÆ®¸²·ÎºÎÅÍ ÀоîµéÀÏ ¼ö°¡ ÀÖ´Â °ÍÀº, java.io.Serializable ÀÎÅÍÆäÀ̽º³ª java.io.Externalizable ÀÎÅÍÆäÀ̽º¸¦ Áö¿øÇÏ´Â ¿ÀºêÁ§Æ®¸¸ÀÔ´Ï´Ù.

¿ÀºêÁ§Æ®¸¦ ½ºÆ®¸²·ÎºÎÅÍ ÀоîµéÀÌ·Á¸é readObject ¸Þ¼­µå¸¦ »ç¿ëÇÕ´Ï´Ù. Èñ¸ÁÀÇ ÇüŸ¦ ÃëµæÇÏ·Á¸é, Java ¾ÈÀüÇÑ Ä³½ºÆ®¸¦ »ç¿ëÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù. Java ¿¡¼­´Â ij¸¯ÅÍ ¶óÀΰú ¹è¿­Àº ¿ÀºêÁ§Æ®·Î Á÷·ÄÈ­ÀÇ »çÀÌ´Â ¿ÀºêÁ§Æ®·Î¼­ ´Ù·ç¾îÁý´Ï´Ù. ±×°ÍµéÀ» ÀоîµéÀÌ·Á¸é, Èñ¸ÁÀÇ ÇüÅ¿¡ ij½ºÆ® µÇ°í ÀÖÀ» Çʿ䰡 ÀÖ½À´Ï´Ù.

±âº» µ¥ÀÌÅÍÇüÀ» ½ºÆ®¸²·ÎºÎÅÍ ÀоîµéÀÌ·Á¸é, DataInput ÀûÀýÇÑ ¸Þ¼­µå¸¦ »ç¿ëÇÕ´Ï´Ù.

¿ÀºêÁ§Æ®ÀÇ µðÆúÆ®ÀÇ Á÷·ÄÈ­ º¹¿ø µµ±¸ ´Â °¢ ÇʵåÀÇ ³»¿ëÀ», ±âÀÔÇØÁ³À» ¶§ »óÅ¿¡ µÇµ¹¸³´Ï´Ù. transient ¶Ç´Â static ¶ó°í ¼±¾ðµÈ Çʵå´Â Á÷·ÄÈ­ º¹¿ø 󸮿¡¼­´Â ¹«½ÃµË´Ï´Ù. ´Ù¸¥ ¿ÀºêÁ§Æ®¸¦ ÂüÁ¶Çϸé, ±×·¯ÇÑ ¿ÀºêÁ§Æ®´Â Çʿ信 µû¶ó¼­ ½ºÆ®¸²·ÎºÎÅÍ ÀÐÈü´Ï´Ù. ¿ÀºêÁ§Æ®ÀÇ ±×·¡ÇÁ´Â ÂüÁ¶ °øÀ¯ µµ±¸ ¸¦ »ç¿ëÇØ ¿Ã¹Ù¸£°Ô º¹¿øµË´Ï´Ù. Á÷·ÄÈ­ º¹¿øÀ» ÇÒ ¶§´Â Ç×»ó »õ·Î¿î ¿ÀºêÁ§Æ®¸¦ ÇÒ´çÇÒ ¼ö ÀÖ¾î °Å±â¿¡ µû¶ó ±âÁ¸ÀÇ ¿ÀºêÁ§Æ®¿¡ÀÇ µ¡¾²±â°¡ ¹æÁöµË´Ï´Ù.

¿ÀºêÁ§Æ®ÀÇ read´Â »õ·Î¿î ¿ÀºêÁ§Æ®ÀÇ »ý¼ºÀÚ ½ÇÇàÀ» ´à¾Æ ÀÖ½À´Ï´Ù. ¸Þ¸ð¸®¸¦ ¿ÀºêÁ§Æ®¿¡ ÇÒ´çÇÒ ¼ö ÀÖ¾î Á¦·Î (NULL)¿¡ ÃʱâÈ­µË´Ï´Ù. Á÷·ÄÈ­ °¡´ÉÇÏÁö ¾ÊÀº Ŭ·¡½º¿¡ ´ëÇØ¼­, Àμö ¾øÀ½ÀÇ »ý¼ºÀÚ°¡ ºÒ·Á °£ µÚ, Á÷·ÄÈ­ °¡´É Ŭ·¡½ºÀÇ Çʵ尡, java.lang.Object ¿¡ °¡Àå °¡±î¿î Ŭ·¡½º·ÎºÎÅÍ ½ÃÀ۵Ǿî, °¡Àå ¿ÀºêÁ§Æ®¿¡ °íÀ¯ÀÇ Å¬·¡½º¿¡¼­ ³¡³ª´Â ½ºÆ®¸²·ÎºÎÅÍ º¹¿øµË´Ï´Ù.

¿¹¸¦ µé¾î, ObjectOutputStream ¿¹·Î ±âÀÔÇØÁø ½ºÆ®¸²·ÎºÎÅÍÀÇ read´Â ´ÙÀ½°ú °°ÀÌ ½Ç½ÃÇÕ´Ï´Ù.


        FileInputStream fis = new FileInputStream("t.tmp");
        ObjectInputStream ois = new ObjectInputStream(fis);

        int i = ois.readInt();
        String today = (String) ois.readObject();
        Date date = (Date) ois.readObject();

        ois.close();
 

Ŭ·¡½º´Â ÀÎÅÍÆäÀ̽º java.io.Serializable ¶Ç´Â java.io.Externalizable¸¦ ±¸ÇöÇÏ´Â °Í¿¡ ÇØ, Ŭ·¡½º°¡ ¾î¶»°Ô Á÷·ÄÈ­ µÇ´ÂÁö¸¦ Á¦¾îÇÕ´Ï´Ù.

Serializable ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÏ´Â °Í¿¡ ÇØ, ¿ÀºêÁ§Æ®ÀÇ Á÷·ÄÈ­°¡, ¿ÀºêÁ§Æ® »óÅ ÀüüÀÇ º¸Á¸°ú º¹¿øÀ» ½Ç½ÃÇÏ´Â °ÍÀÌ °¡´ÉÇÏ°Ô µÇ¾î, ¶Ç Ŭ·¡½º°¡, ½ºÆ®¸²ÀÇ ±âÀÔ½Ã¿Í ½ºÆ®¸²ÀÇ read½ÃÀÇ »çÀÌ¿¡ Àü°³ÇÏ´Â °ÍÀÌ °¡´ÉÇÏ°Ô µË´Ï´Ù. ¿ÀºêÁ§Æ®ÀÇ Á÷·ÄÈ­´Â ¿ÀºêÁ§Æ®°£ÀÇ ÂüÁ¶¸¦ ÀÚµ¿ÀûÀ¸·Î À̵¿ÇØ, ¿ÀºêÁ§Æ® ±×·¡ÇÁÀÇ Àüü¸¦ º¸Á¸ ¹× º¹¿øÇÕ´Ï´Ù.

Á÷·ÄÈ­ ó¸®¿Í Á÷·ÄÈ­ º¹¿ø ó¸® ¶§¿¡ Ưº°ÇÑ Á¶ÀÛÀ» ÇÊ¿ä·Î ÇÏ´Â Serializable Ŭ·¡½º´Â ´ÙÀ½ÀÇ ¸Þ¼­µå¸¦ ±¸ÇöÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.


 private void writeObject(java.io.ObjectOutputStream stream)
     throws IOException;
 private void readObject(java.io.ObjectInputStream stream)
     throws IOException, ClassNotFoundException; 
 private void readObjectNoData() 
     throws ObjectStreamException;
 

readObject ¸Þ¼­µå´Â ´ëÀÀÇÏ´Â writeObject ¸Þ¼­µå¿¡ ÇØ ½ºÆ®¸²¿¡ ±âÀÔÇØÁø µ¥ÀÌÅ͸¦ »ç¿ëÇϴ ƯÁ¤ÀÇ Å¬·¡½º¿¡ µµÂøÇØ, ¿ÀºêÁ§Æ® »óŸ¦ º¸Á¸ ¹× º¹¿øÇÒ Ã¥ÀÓÀ» °¡Áý´Ï´Ù. ÀÌ ¸Þ¼­µå´Â ±× ½´ÆÛ Ŭ·¡½º³ª ¼­ºê Ŭ·¡½º¿¡ ¼ÓÇÏ´Â »óÅ¿¡ °ü¿©ÇÒ ÇÊ¿ä´Â ¾ø½À´Ï´Ù. »óŸ¦ º¹¿øÇÏ·Á¸é, °³°³ÀÇ Çʵ忡 µµÂøÇØ ObjectInputStream ·ÎºÎÅÍ µ¥ÀÌÅ͸¦ Àоîµé¿©, ¿ÀºêÁ§Æ®ÀÇ ÀûÀýÇÑ Çʵ忡ÀÇ ÇÒ´çÀ» ½Ç½ÃÇÕ´Ï´Ù. ±âº» µ¥ÀÌÅÍÇüÀÇ read´Â DataInput ¿¡ ÇØ Áö¿øµË´Ï´Ù.

¿ÀºêÁ§Æ® µ¥ÀÌÅ͸¦ ÀоîµéÀÌ·Á°í ÇÒ °æ¿ì¿¡ ±× À§Ä¡°¡ ´ëÀÀÇÏ´Â writeObject ¸Þ¼­µå¿¡ ÇØ ±âÀÔÇØÁø Ä¿½ºÅÒ µ¥ÀÌÅÍÀÇ °æ°è¸¦ ³Ñ°í ÀÖ´Â °æ¿ì´Â eof ÇʵåÀÇ °ªÀÌ true »óÅ·ΠOptionalDataException °¡ Throw µË´Ï´Ù. ¿ÀºêÁ§Æ®¸¦ Á÷·ÄÈ­ÇØ ÀоîµéÀÌ·Á°í ÇÒ °æ¿ì¿¡ ±× À§Ä¡°¡ ÇÒ´çÇÏ°í°¡ ³¡³­ µ¥ÀÌÅÍÀÇ ¸¶Áö¸·À» ³Ñ°í ÀÖ´Â °æ¿ì´Â ½ºÆ®¸²ÀÇ °æ¿ì¿Í °°°Ô, µ¥ÀÌÅÍÀÇ ¸¶Áö¸·À» ³ªÅ¸³»´Â ¿¹¿Ü°¡ µ¹·ÁÁÖ°íÁý´Ï´Ù. Áï, ¹ÙÀÌÆ® ´ÜÀ§ÀÇ read¿¡¼­´Â ¹ÙÀÌÆ®°¡ ÀÐÇûÀ» ¶§¿¡ -1 °¡ µ¹·ÁÁÖ°íÁý´Ï´Ù. ¿ø½ÃÀû read¿¡¼­´Â EOFException °¡ Throw µË´Ï´Ù. ´ëÀÀÇÏ´Â writeObject ¸Þ¼­µå°¡ ¾ø´Â °æ¿ì´Â µðÆúÆ®ÀÇ Á÷·ÄÈ­ µ¥ÀÌÅÍÀÇ ¸¶Áö¸·ÀÌ ÇÒ´çÇÏ°í°¡ ³¡³­ µ¥ÀÌÅͰ¡ ³¡³ª°Ô µË´Ï´Ù.

¿ø½ÃÀû read¿Í ¿ÀºêÁ§Æ® read°¡ readExternal ¸Þ¼­µå·ÎºÎÅÍ ºÒ·Á °¬À» °æ¿ì´Â ¾çÂÊ ¸ðµÎ ¶È°°ÀÌ µ¿ÀÛÇÕ´Ï´Ù. ½ºÆ®¸²ÀÇ À§Ä¡°¡ ´ëÀÀÇÏ´Â writeExternal ¸Þ¼­µå¿¡ ÇØ ±âÀÔÇØÁø µ¥ÀÌÅÍÀÇ ¸¶Áö¸·¿¡ ÀÖ´Â °æ¿ì, ¿ÀºêÁ§Æ® read¿¡¼­´Â eof °¡ true ·Î ¼³Á¤µÈ »óÅ·ΠOptionalDataException °¡ Throw µÇ¾î ¹ÙÀÌÆ® ´ÜÀ§ÀÇ read¿¡¼­´Â -1 ÀÌ µ¹·ÁÁÖ°íÁ® ¿ø½ÃÀû read¿¡¼­´Â EOFException °¡ Throw µË´Ï´Ù. ´Ù¸¸, ³°Àº ObjectStreamConstants.PROTOCOL_VERSION_1 ÇÁ·ÎÅäÄÝÀ» »ç¿ëÇØ ±âÀÔÇØÁø ½ºÆ®¸²¿¡¼­´Â ÀÌ µ¿ÀÛÀº Àû¿ëµÇÁö ¾Ê½À´Ï´Ù. writeExternal ¸Þ¼­µå¿Í ´Þ¸®, µ¥ÀÌÅÍÀÇ ¸¶Áö¸·ÀÌ ±âÀÔÇØÁöÁö ¾Ê±â ¶§¹®¿¡ µ¥ÀÌÅÍÀÇ ¸¶Áö¸·À» °ËÃâÇÒ ¼ö ¾ø±â ¶§¹®ÀÔ´Ï´Ù.

readObjectNoData ¸Þ¼­µå´Â Á÷·ÄÈ­ º¹¿øµÇ´Â ¿ÀºêÁ§Æ®ÀÇ ½´ÆÛ Ŭ·¡½º°¡ Á÷·ÄÈ­ ½ºÆ®¸²·Î ÁöÁ¤µÇ¾î ÀÖÁö ¾ÊÀ» ¶§¿¡ ƯÁ¤ÀÇ Å¬·¡½º¿¡ µµÂøÇØ ±× ¿ÀºêÁ§Æ® »óŸ¦ ÃʱâÈ­ÇÕ´Ï´Ù. Á÷·ÄÈ­ º¹¿øµÇ´Â ÀνºÅϽºÀÇ Å¬·¡½º°¡ ¼ö½ÅÃø°ú ¼Û½ÅÃø¿¡¼­ ´Ù¸¥ °æ¿ì³ª, ¼ö½ÅÃøÀÇ ÀνºÅϽº·Î È®ÀåµÇ°í Àִ Ŭ·¡½º°¡ ¼Û½ÅÃø¿¡¼­ È®ÀåµÇ¾î ÀÖÁö ¾ÊÀº °æ¿ì¿¡ ÀÌ·¯ÇÑ »óȲÀÌ ¹ß»ýÇÏ´Â ÀÏÀÌ ÀÖ½À´Ï´Ù. ¶Ç, Á÷·ÄÈ­ ½ºÆ®¸²ÀÌ °³ÂùµÇ°í ÀÖ´Â °æ¿ì¿¡µµ ¹ß»ýÇÕ´Ï´Ù. ¾ÇÀǰ¡ ÀÖ´Â ¶Ç´Â ºÒ¿ÏÀüÇÑ ¼Ò½º ½ºÆ®¸²·ÎºÎÅÍ Á÷·ÄÈ­ º¹¿øÇÑ ¿ÀºêÁ§Æ®¸¦ ÀûÀýÈ÷ ÃʱâÈ­ÇÒ ¶§´Â readObjectNoData¸¦ »ç¿ëÇÕ´Ï´Ù.

Á÷·ÄÈ­´Â java.io.Serializable ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÏÁö ¾Ê´Â ¿ÀºêÁ§Æ®ÀÇ ÇʵåÀÇ read³ª, ±×·¯ÇÑ Çʵ忡ÀÇ °ªÀÇ ÇÒ´çÀº ½Ç½ÃÇÏÁö ¾Ê½À´Ï´Ù. Á÷·ÄÈ­ °¡´ÉÇÏÁö ¾ÊÀº ¿ÀºêÁ§Æ®ÀÇ ¼­ºê Ŭ·¡½º¸¦ Á÷·ÄÈ­ °¡´ÉÇÏ°Ô ÇÏ´Â °ÍÀº °¡´ÉÇÕ´Ï´Ù. ÀÌ °æ¿ì, Á÷·ÄÈ­ °¡´ÉÇÏÁö ¾ÊÀº Ŭ·¡½º´Â ±× Çʵ带 ÃʱâÈ­ÇÒ ¼ö ÀÖµµ·Ï Çϱâ À§ÇÑ, Àμö ¾øÀ½ÀÇ »ý¼ºÀÚ¸¦ °¡Áú Çʿ䰡 ÀÖ½À´Ï´Ù. ÀÌ °æ¿ì, Á÷·ÄÈ­ °¡´ÉÇÏÁö ¾ÊÀº Ŭ·¡½º »óŸ¦ º¸Á¸ ¹× º¹¿øÇÏ´Â °ÍÀº, ¼­ºê Ŭ·¡½ºÀÇ Ã¥ÀÓÀÌ µË´Ï´Ù. ±× Ŭ·¡½ºÀÇ Çʵ尡 ¾×¼¼½º °¡´ÉÇÑ (public, package, ¶Ç´Â protected) °æ¿ì, ȤÀº »óÅÂÀÇ º¹¿ø¿¡ ÀÌ¿ëÇÒ ¼ö ÀÖ´Â set ¸Þ¼­µå³ª get ¸Þ¼­µå°¡ ÀÖ´Â °æ¿ì°¡ ÀÚÁÖ ÀÖ½À´Ï´Ù.

¿ÀºêÁ§Æ®¸¦ Á÷·ÄÈ­ º¹¿øÇÏ´Â µ¿¾È¿¡ ¹ß»ýÇÑ ¸ðµç ¿¹¿Ü´Â ObjectInputStream ¿¡ ijġ µÇ¾î read 󸮸¦ ÀÌ»óÁ¾·á(ABEND) ½Ãŵ´Ï´Ù.

Externalizable ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇϸé, ¿ÀºêÁ§Æ®ÀÇ Á÷·ÄÈ­ µÈ Çü½ÄÀÇ ³»¿ë ¹× Çü½ÄÀ» ¿ÀºêÁ§Æ®ÃøÀÌ ¿ÏÀüÇÏ°Ô Á¦¾îÇÏ´Â °ÍÀÌ °¡´ÉÇÏ°Ô µË´Ï´Ù. Externalizable ÀÎÅÍÆäÀ̽ºÀÇ ¸Þ¼­µåÀÎ writeExternal ¿Í readExternal´Â ¿ÀºêÁ§Æ® »óŸ¦ º¸Á¸ ¹× º¹¿øÇϱâ À§Çؼ­ ºÒ·Á °©´Ï´Ù. ÀÌ·¯ÇÑ ¸Þ¼­µå´Â Ŭ·¡½º¿¡ ÇØ ±¸ÇöµÇ¾úÀ» °æ¿ì¿¡´Â ObjectOutput ¿Í ObjectInput ¸ðµç ¸Þ¼­µå¸¦ »ç¿ëÇØ, ÀڽŠ»óÅÂÀÇ ±âÀÔ ¹× read¸¦ ½Ç½ÃÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. ¾î¶°ÇÑ ¹öÁ¯À̾ ó¸®ÇÒ ¼ö ÀÖµµ·Ï ÇÏ´Â °ÍÀº, ¿ÀºêÁ§Æ®ÀÇ Ã¥ÀÓÀÔ´Ï´Ù.

enum Á¤¼ö´Â º¸Åë ÀÇ Á÷·ÄÈ­ °¡´É ¿ÀºêÁ§Æ®³ª ¿ÜºÎÈ­ °¡´É ¿ÀºêÁ§Æ®¿Í´Â ´Ù¸¥ ¹æ¹ýÀ¸·Î Á÷·ÄÈ­ º¹¿øµË´Ï´Ù. enum Á¤¼öÀÇ Á÷·ÄÈ­ Çü½ÄÀº À̸§¸¸À¸·Î ±¸¼ºµË´Ï´Ù. Á¤¼öÀÇ ÇʵåÄ¡´Â Àü¼Û µÇÁö ¾Ê½À´Ï´Ù. enum Á¤¼ö¸¦ Á÷·ÄÈ­ º¹¿øÇÏ·Á¸é, ObjectInputStream °¡ ½ºÆ®¸²·ÎºÎÅÍ Á¤¼öÀÇ À̸§À» ÀоîµéÀÔ´Ï´Ù. ´ÙÀ½¿¡ enum Á¤¼öÀÇ ±âÀúÇüÀ̶ó°í ¹ÞÀº Á¤¼ö¸íÀ» Àμö·Î¼­ »ç¿ëÇØ, static ¸Þ¼­µå Enum.valueOf(Class, String)¸¦ È£ÃâÇϸé Á÷·ÄÈ­ º¹¿øµÈ Á¤¼ö¸¦ ÃëµæÇÒ ¼ö ÀÖ½À´Ï´Ù. ´Ù¸¥ Á÷·ÄÈ­ °¡´É ¿ÀºêÁ§Æ® ¶Ç´Â ¿ÜºÎÈ­ °¡´É ¿ÀºêÁ§Æ®¿Í °°ÀÌ, enum Á¤¼öµµ, Á÷·ÄÈ­ ½ºÆ®¸²¿¡ ³ªÁß¿¡ ³ªÅ¸³ª´Â ¿ªÂüÁ¶ÀÇ Å¸°ÙÀ¸·Î¼­ ±â´ÉÇÒ ¼ö ÀÖ½À´Ï´Ù. enum Á¤¼ö°¡ Á÷·ÄÈ­ º¹¿øµÇ´Â ¼ø¼­´Â Ä¿½ºÅ͸¶ÀÌÁî ÇÒ ¼ö ¾ø½À´Ï´Ù. Áï, enum Çü¿¡ ÇØ Á¤ÀǵÈ, Ŭ·¡½º ƯÀ¯ÀÇ readObject, readObjectNoData ¹× readResolve ¸Þ¼­µå´Â Á÷·ÄÈ­ º¹¿øµ¿¾ÈÀº ¹«½ÃµË´Ï´Ù. °°ÀÌ serialPersistentFields ¶Ç´Â serialVersionUID ÇÊµå ¼±¾ðµµ ¹«½ÃµË´Ï´Ù. ¸ðµç enum ÇüÀº, serialVersionUID °¡ 0L ¿¡ °íÁ¤µÇ°í ÀÖ½À´Ï´Ù.

µµÀÔµÈ ¹öÁ¯:
JDK1. 1
°ü·Ã Ç׸ñ:
DataInput, ObjectOutputStream, Serializable, Object Serialization Specification, Section 3, Object Input Classes

Áßø(Nested) Ŭ·¡½º °³¿ä
static class ObjectInputStream.GetField
          ÀÔ·Â ½ºÆ®¸²·ÎºÎÅÍ ÀÐÈù Áö¼Ó Çʵ忡ÀÇ ¾×¼¼½º¸¦ Á¦°øÇÕ´Ï´Ù.
 
ÇÊµå °³¿ä
 
ÀÎÅÍÆäÀ̽º java.io. ObjectStreamConstants ·ÎºÎÅÍ »ó¼ÓµÈ Çʵå
baseWireHandle, PROTOCOL_VERSION_1, PROTOCOL_VERSION_2, SC_BLOCK_DATA, SC_ENUM, SC_EXTERNALIZABLE, SC_SERIALIZABLE, SC_WRITE_METHOD, STREAM_MAGIC, STREAM_VERSION, SUBCLASS_IMPLEMENTATION_PERMISSION, SUBSTITUTION_PERMISSION, TC_ARRAY, TC_BASE, TC_BLOCKDATA, TC_BLOCKDATALONG, TC_CLASS, TC_CLASSDESC, TC_ENDBLOCKDATA, TC_ENUM, TC_EXCEPTION, TC_LONGSTRING, TC_MAX, TC_NULL, TC_OBJECT, TC_PROXYCLASSDESC, TC_REFERENCE, TC_RESET, TC_STRING
 
»ý¼ºÀÚ °³¿ä
protected ObjectInputStream ()
          ObjectInputStream¸¦ ¿ÏÀüÇÏ°Ô À籸ÇöÇÏ´Â ¼­ºê Ŭ·¡½º°¡, ObjectInputStream ÀÌ ±¸Çö¿¡ ÇØ »ç¿ëµÈÁö ¾ó¸¶ ¾ÈµÈ private µ¥ÀÌÅ͸¦ ÇÒ´çÇÒ Çʿ䰡 ¾ø°Ô ÇÏ´Â ¼ö´ÜÀ» Á¦°øÇÕ´Ï´Ù.
  ObjectInputStream (InputStream  in)
          ÁöÁ¤µÈ InputStream ·ÎºÎÅÍ ÀоîµéÀÌ´Â ObjectInputStream¸¦ ÀÛ¼ºÇÕ´Ï´Ù.
 
¸Þ¼­µå °³¿ä
 int available ()
          ºí·Ï ÇÏÁö ¾Ê°í ÀоîµéÀÏ ¼ö°¡ ÀÖ´Â ¹ÙÀÌÆ®¼ö¸¦ µ¹·ÁÁÝ´Ï´Ù.
 void close ()
          ÀÔ·Â ½ºÆ®¸²À» ´Ý½À´Ï´Ù.
 void defaultReadObject ()
          ÇöÀçÀÇ Å¬·¡½ºÀÇ ºñ static ¹× ºñ transient Çʵ带, ÀÌ ½ºÆ®¸²·ÎºÎÅÍ ÀоîµéÀÔ´Ï´Ù.
protected  boolean enableResolveObject (boolean enable)
          ½ºÆ®¸²·ÎºÎÅÍ ÀÐÈù ¿ÀºêÁ§Æ®°¡ ġȯµË´Ï´Ù.
 int read ()
          µ¥ÀÌÅÍÀÇ ¹ÙÀÌÆ®¸¦ ÀоîµéÀÔ´Ï´Ù.
 int read (byte[] buf, int off, int len)
          ¹ÙÀÌÆ®ÀÇ ¹è¿­¿¡ ÀоîµéÀÔ´Ï´Ù.
 boolean readBoolean ()
          boolean¸¦ ÀоîµéÀÔ´Ï´Ù.
 byte readByte ()
          8 ºñÆ®ÀÇ ¹ÙÀÌÆ®¸¦ ÀоîµéÀÔ´Ï´Ù.
 char readChar ()
          16 ºñÆ®ÀÇ char¸¦ ÀоîµéÀÔ´Ï´Ù.
protected  ObjectStreamClass readClassDescriptor ()
          Á÷·ÄÈ­ ½ºÆ®¸²·ÎºÎÅÍ Å¬·¡½º ±â¼úÀÚ¸¦ ÀоîµéÀÔ´Ï´Ù.
 double readDouble ()
          64 ºñÆ®ÀÇ double¸¦ ÀоîµéÀÔ´Ï´Ù.
 ObjectInputStream.GetField readFields ()
          ½ºÆ®¸²·ÎºÎÅÍ Áö¼Ó Çʵ带 Àоîµé¿©, ±×°ÍµéÀ» À̸§À» ÁöÁ¤ÇØ ¾×¼¼½º ÇÒ ¼ö ÀÖµµ·Ï ÇÕ´Ï´Ù.
 float readFloat ()
          32 ºñÆ®ÀÇ float¸¦ ÀоîµéÀÔ´Ï´Ù.
 void readFully (byte[] buf)
          ¹ÙÀÌÆ®¸¦ ÀоîµéÀÔ´Ï´Ù.
 void readFully (byte[] buf, int off, int len)
          ¹ÙÀÌÆ®¸¦ ÀоîµéÀÔ´Ï´Ù.
 int readInt ()
          32 ºñÆ®ÀÇ int¸¦ ÀоîµéÀÔ´Ï´Ù.
 String readLine ()
          ÃßõÇÏÁö ¾Ê½À´Ï´Ù .  ÀÌ ¸Þ¼­µå´Â ¹ÙÀÌÆ®¸¦ Á¤È®ÇÏ°Ô ¹®ÀÚ·Î º¯È¯ÇÏÁö ¾Ê½À´Ï´Ù. »ó¼¼ ¹× ´ëü ¸Þ¼­µå¿¡ ´ëÇØ¼­´Â DataInputStream¸¦ ÂüÁ¶ÇϽʽÿÀ.
 long readLong ()
          64 ºñÆ®ÀÇ long¸¦ ÀоîµéÀÔ´Ï´Ù.
 Object readObject ()
          ObjectInputStream ·ÎºÎÅÍ ¿ÀºêÁ§Æ®¸¦ ÀоîµéÀÔ´Ï´Ù.
protected  Object readObjectOverride ()
          Àμö ¾øÀ½ÀÇ protected »ý¼ºÀÚ¸¦ »ç¿ëÇØ ObjectOutputStream¸¦ ÀÛ¼ºÇÑ ObjectOutputStream ½Å·ÚÇÒ ¼ö ÀÖ´Â ¼­ºê Ŭ·¡½º¿¡ ÇØ ºÒ·Á °©´Ï´Ù.
 short readShort ()
          16 ºñÆ®ÀÇ short¸¦ ÀоîµéÀÔ´Ï´Ù.
protected  void readStreamHeader ()
          ¼­ºê Ŭ·¡½º°¡ ÀÚ½ÅÀÇ ½ºÆ®¸² Çì´õÀÇ read¿Í °ËÁõÀ» ½Ç½ÃÇÒ ¼ö ÀÖµµ·Ï Çϱâ À§Çؼ­ Á¦°øµÇ°í ÀÖ½À´Ï´Ù.
 Object readUnshared ()
          ObjectInputStream ·ÎºÎÅÍ ¡¸°øÀ¯µÇÁö ¾Ê´Â´Ù¡¹¿ÀºêÁ§Æ®¸¦ ÀоîµéÀÔ´Ï´Ù.
 int readUnsignedByte ()
          ºÎÈ£ ¾øÀ½ 8 ºñÆ® ¹ÙÀÌÆ®¸¦ ÀоîµéÀÔ´Ï´Ù.
 int readUnsignedShort ()
          ºÎÈ£ ¾øÀ½ 16 ºñÆ®ÀÇ short¸¦ ÀоîµéÀÔ´Ï´Ù.
 String readUTF ()
          ¼öÁ¤ UTF-8 Çü½ÄÀÇ Ä³¸¯ÅÍ ¶óÀÎÀ» ÀоîµéÀÔ´Ï´Ù.
 void registerValidation (ObjectInputValidation  obj, int prio)
          ¿ÀºêÁ§Æ® ±×·¡ÇÁ°¡ µ¹·ÁÁÖ°íÁö±â Àü¿¡ °ËÁõµÇ¾î¾ß ÇÒ ¿ÀºêÁ§Æ®¸¦ µî·ÏÇÕ´Ï´Ù.
protected  Class <? > resolveClass (ObjectStreamClass  desc)
          ÁöÁ¤µÈ ½ºÆ®¸² Ŭ·¡½ºÀÇ ±â¼ú¿¡ ´ëÀÀÇÏ´Â ·ÎÄà Ŭ·¡½º¸¦ ·ÎµåÇÕ´Ï´Ù.
protected  Object resolveObject (Object  obj)
          Á÷·ÄÈ­ º¹¿ø ½Ã¿¡ ObjectInputStream ½Å·ÚÇÒ ¼ö ÀÖ´Â ¼­ºê Ŭ·¡½º°¡, ¾î´À ¿ÀºêÁ§Æ®¸¦ ´Ù¸¥ ¿ÀºêÁ§Æ®¿¡ ġȯÇÒ ¼ö ÀÖµµ·Ï ÇÕ´Ï´Ù.
protected  Class <? > resolveProxyClass (String [] interfaces)
          ÇÁ·Ï½Ã Ŭ·¡½º ±â¼úÀÚ·Î ÁöÁ¤µÈ ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÏ´Â ÇÁ·Ï½Ã Ŭ·¡½º¸¦ µ¹·ÁÁÝ´Ï´Ù.
 int skipBytes (int len)
          ¹ÙÀÌÆ®¸¦ ½ºÅµ ÇÕ´Ï´Ù.
 
Ŭ·¡½º java.io. InputStream ·ÎºÎÅÍ »ó¼ÓµÈ ¸Þ¼­µå
mark, markSupported, read, reset, skip
 
Ŭ·¡½º java.lang. Object ·ÎºÎÅÍ »ó¼ÓµÈ ¸Þ¼­µå
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
ÀÎÅÍÆäÀ̽º java.io. ObjectInput ·ÎºÎÅÍ »ó¼ÓµÈ ¸Þ¼­µå
read, skip
 

»ý¼ºÀÚ »ó¼¼

ObjectInputStream

public ObjectInputStream(InputStream  in)
                  throws IOException 
ÁöÁ¤µÈ InputStream ·ÎºÎÅÍ ÀоîµéÀÌ´Â ObjectInputStream¸¦ ÀÛ¼ºÇÕ´Ï´Ù. Á÷·ÄÈ­ ½ºÆ®¸² Çì´õ´Â ½ºÆ®¸²·ÎºÎÅÍ ÀÐÈù µÚ, °ËÁõµË´Ï´Ù. ÀÌ »ý¼ºÀÚ´Â ´ëÀÀÇÏ´Â ObjectOutputStream °¡ Çì´õ¸¦ ±âÀÔÇØ Ç÷¡½Ã ÇÒ ¶§±îÁö ºí·Ï ÇÕ´Ï´Ù.

½ÃÅ¥·¯Æ¼ ¸Å´ÏÀú°¡ ÀνºÅç µÇ°í ÀÖ´Â °æ¿ì, ObjectInputStream.readFields ¸Þ¼­µå ¶Ç´Â ObjectInputStream.readUnshared ¸Þ¼­µå¸¦ ¿À¹ö¶óÀ̵å(override) ÇÏ´Â ¼­ºê Ŭ·¡½ºÀÇ »ý¼ºÀÚ¿¡ ÇØ SerializablePermission("enableSubclassImplementation")°¡ Á÷Á¢ ¶Ç´Â °£Á¢¿¡ ºÒ·Á °¬À» ¶§¿¡ ÀÌ »ý¼ºÀÚ´Â ÀÌ ¾×¼¼½º±ÇÀ» È®ÀÎÇÕ´Ï´Ù.

ÆÄ¶ó¹ÌÅÍ:
in - read¿øÀÇ ÀÔ·Â ½ºÆ®¸²
¿¹¿Ü:
StreamCorruptedException - ½ºÆ®¸² Çì´õ°¡ ºÎÁ¤ÇÑ °æ¿ì
IOException - ½ºÆ®¸² Çì´õÀÇ readÁß¿¡ ÀÔÃâ·Â ¿¡·¯°¡ ¹ß»ýÇßÀ» °æ¿ì
SecurityException - ½Å·ÚµÇ¾î ÀÖÁö ¾ÊÀº ¼­ºê Ŭ·¡½º°¡, º¸¾È»ó Áß¿äÇÑ ¸Þ¼­µå¸¦ ºÎÁ¤ÇÏ°Ô ¿À¹ö¶óÀ̵å(override) ÇßÀ» °æ¿ì
NullPointerException - in °¡ null °æ¿ì
°ü·Ã Ç׸ñ:
ObjectInputStream(), readFields(), ObjectOutputStream.ObjectOutputStream(OutputStream)

ObjectInputStream

protected ObjectInputStream()
                     throws IOException,

                            SecurityException 
ObjectInputStream¸¦ ¿ÏÀüÇÏ°Ô À籸ÇöÇÏ´Â ¼­ºê Ŭ·¡½º°¡, ObjectInputStream ÀÌ ±¸Çö¿¡ ÇØ »ç¿ëµÈÁö ¾ó¸¶ ¾ÈµÈ private µ¥ÀÌÅ͸¦ ÇÒ´çÇÒ Çʿ䰡 ¾ø°Ô ÇÏ´Â ¼ö´ÜÀ» Á¦°øÇÕ´Ï´Ù.

½ÃÅ¥·¯Æ¼ ¸Å´ÏÀú°¡ ÀνºÅç µÇ°í ÀÖ´Â °æ¿ì, ÀÌ ¸Þ¼­µå´Â ¿ì¼± ½ÃÅ¥·¯Æ¼ ¸Å´ÏÀúÀÇ checkPermission ¸Þ¼­µå¸¦ ¾×¼¼½º±Ç SerializablePermission("enableSubclassImplementation") ·Î È£ÃâÇØ, ¼­ºê Ŭ·¡½ºÈ­¸¦ À¯È¿ÇÏ°Ô ÇÒ ¼ö ÀÖµµ·Ï ÇÕ´Ï´Ù.

¿¹¿Ü:
SecurityException - ½ÃÅ¥·¯Æ¼ ¸Å´ÏÀú°¡ Á¸ÀçÇØ, ±× checkPermission ¸Þ¼­µå°¡ ¼­ºê Ŭ·¡½ºÈ­¸¦ À¯È¿ÇÏ°Ô ÇÏ´Â °ÍÀ» °ÅºÎÇßÀ» °æ¿ì
IOException
°ü·Ã Ç׸ñ:
SecurityManager.checkPermission(java.security.Permission), SerializablePermission
¸Þ¼­µåÀÇ »ó¼¼

readObject

public final Object  readObject()
                        throws IOException,

                               ClassNotFoundException 
ObjectInputStream ·ÎºÎÅÍ ¿ÀºêÁ§Æ®¸¦ ÀоîµéÀÔ´Ï´Ù. ¿ÀºêÁ§Æ®ÀÇ Å¬·¡½º, Ŭ·¡½ºÀÇ ½Ã±×´ÏÃÄ, Ŭ·¡½ºÀÇ ºñ transient ¹× ºñ static Çʵå¿Í ±× ½´ÆÛŸÀÔÀÇ ¸ðµç °ªÀÌ ÀÐÈü´Ï´Ù. ¾î´À Ŭ·¡½º¿¡ ´ëÇÑ µðÆúÆ®ÀÇ Á÷·ÄÈ­ º¹¿øÀº, writeObject ¿Í readObject ¸Þ¼­µå¸¦ »ç¿ëÇØ ¿À¹ö¶óÀ̵å(override) ÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. ÀÌ ¿ÀºêÁ§Æ®¿¡ ÇØ ÂüÁ¶µÇ´Â ¿ÀºêÁ§Æ®´Â Áß°£ÀûÀ¸·Î ÀÐÇô °Å±â¿¡ µû¶ó, ¿ÏÀüÇÏ°Ô µ¿µîÇÑ ¿ÀºêÁ§Æ® ±×·¡ÇÁ°¡ readObject ¿¡ ÇØ À籸Ãà µË´Ï´Ù.

·çÆ® ¿ÀºêÁ§Æ®´Â ÂüÁ¶ÇÏ´Â Çʵå¿Í ¿ÀºêÁ§Æ®ÀÇ ¸ðµç °ÍÀÌ º¹¿øµÇ¾úÀ» ¶§, ¿ÏÀüÇÏ°Ô º¹¿øµË´Ï´Ù. ÀÌ ½ÃÁ¡¿¡¼­, ±×·¯ÇÑ µî·ÏµÈ ¿ì¼± ¼øÀ§¿¡ ±Ù°ÅÇØ, ¿ÀºêÁ§Æ® °ËÁõ ÄݹéÀÌ ½ÇÇàµË´Ï´Ù. ÀÌ ÄݹéÀº, (Ưº°ÇÑ readObject ¸Þ¼­µåÀÇ) ¿ÀºêÁ§Æ®¿¡ ÇØ, ±×°ÍµéÀÌ °³º°ÀûÀ¸·Î º¹¿øµÉ ¶§ µî·ÏµË´Ï´Ù.

¿¹¿Ü´Â InputStream ¿¡ °üÇÑ ¹®Á¦³ª, Á÷·ÄÈ­ º¹¿øÇØ¾ß ÇÏ´Â °ÍÀÌ ¾Æ´Ñ Ŭ·¡½º¿¡ µµÂøÇØ Throw µË´Ï´Ù. ¸ðµç ¿¹¿Ü´Â InputStream ¿¡ ÀÖ¾î Ä¡¸íÀûÀ̾î, InputStream¸¦ ºÒÈ®Á¤ »óÅ·ΠÇÕ´Ï´Ù. ½ºÆ®¸² »óŸ¦ ¹«½ÃÇÒ±î ȸº¹ ó¸®Çұ °áÁ¤ÇÏ´Â °ÍÀº È£ÃâÃøÀÔ´Ï´Ù.

Á¤ÀÇ:
ÀÎÅÍÆäÀ̽º ObjectInput ³»ÀÇ readObject
¹Ýȯ°ª:
½ºÆ®¸²·ÎºÎÅÍ ÀÐÈù ¿ÀºêÁ§Æ®
¿¹¿Ü:
ClassNotFoundException - Á÷·ÄÈ­ µÈ ¿ÀºêÁ§Æ®ÀÇ Å¬·¡½º°¡ ¹ß°ßµÇÁö ¾Ê¾Ò´ø °æ¿ì
InvalidClassException - Á÷·ÄÈ­·Î »ç¿ëµÇ´Â Ŭ·¡½º¿¡ ÇϵîÀÇ ºÒÆíÀÌ ÀÖ¾úÀ» °æ¿ì
StreamCorruptedException - ½ºÆ®¸²ÀÇ Á¦¾î Á¤º¸¿¡ Àϰü¼ºÀÌ ¾ø´Â °æ¿ì
OptionalDataException - ¿ø½ÃÀû µ¥ÀÌÅͰ¡, ¿ÀºêÁ§Æ®´Â ¾Æ´Ï°í ½ºÆ®¸²¿¡ ¹ß°ßµÇ¾úÀ» °æ¿ì
IOException - ÀÔÃâ·Â¿¡ °ü·ÃÇÑ ¿¹¿ÜÀÇ ¾î¶² °ÍÀΰ¡°¡ ¹ß»ýÇßÀ» °æ¿ì

readObjectOverride

protected Object  readObjectOverride()
                             throws IOException,

                                    ClassNotFoundException 
Àμö ¾øÀ½ÀÇ protected »ý¼ºÀÚ¸¦ »ç¿ëÇØ ObjectOutputStream¸¦ ÀÛ¼ºÇÑ ObjectOutputStream ½Å·ÚÇÒ ¼ö ÀÖ´Â ¼­ºê Ŭ·¡½º¿¡ ÇØ ºÒ·Á °©´Ï´Ù. ¼­ºê Ŭ·¡½º´Â ¼ö½ÄÀÚ°¡ final ¿À¹ö¶óÀ̵å(override) ¸Þ¼­µå¸¦ Á¦°øÇÑ´Ù°í º¸¿©Áý´Ï´Ù.

¹Ýȯ°ª:
½ºÆ®¸²·ÎºÎÅÍ ÀÐÈù ¿ÀºêÁ§Æ®
¿¹¿Ü:
ClassNotFoundException - Á÷·ÄÈ­ µÈ ¿ÀºêÁ§Æ®ÀÇ Å¬·¡½º°¡ ¹ß°ßµÇÁö ¾Ê¾Ò´ø °æ¿ì
OptionalDataException - ¿ø½ÃÀû µ¥ÀÌÅͰ¡, ¿ÀºêÁ§Æ®´Â ¾Æ´Ï°í ½ºÆ®¸²¿¡ ¹ß°ßµÇ¾úÀ» °æ¿ì
IOException - ±âº»ÀÌ µÇ´Â ½ºÆ®¸²ÀÇ readÁß¿¡ ÀÔÃâ·Â ¿¡·¯°¡ ¹ß»ýÇßÀ» °æ¿ì
µµÀÔµÈ ¹öÁ¯:
1.2
°ü·Ã Ç׸ñ:
ObjectInputStream(), readObject()

readUnshared

public Object  readUnshared()
                    throws IOException,

                           ClassNotFoundException 
ObjectInputStream ·ÎºÎÅÍ ¡¸°øÀ¯µÇÁö ¾Ê´Â´Ù¡¹¿ÀºêÁ§Æ®¸¦ ÀоîµéÀÔ´Ï´Ù. ÀÌ ¸Þ¼­µå´Â readObject ¿Í ´à¾Æ ÀÖ½À´Ï´Ù. ´Ù¸¸, readObject ¹× readUnshared¸¦ È£ÃâÇØ, ÀÌ È£ÃâÀÌ ÃëµæÇÑ Á÷·ÄÈ­ º¹¿øµÈ ÀνºÅϽº¿¡ ´ëÇÑ ÂüÁ¶¸¦ µ¹·ÁÁÙ ¼ö ¾ø½À´Ï´Ù. ¿¹¸¦ µé¾î, ´ÙÀ½°ú °°Àº ÂüÁ¶´Â ÇÒ ¼ö ¾ø½À´Ï´Ù. readUnshared¸¦ È£ÃâÇØ ¿ÀºêÁ§Æ®¸¦ Á÷·ÄÈ­ º¹¿øÇϸé, µ¹·ÁÁÖ°íÁö´Â ¿ÀºêÁ§Æ®¿¡ °ü·ÃÁöÀ» ¼ö ÀÖ¾ú´ø ½ºÆ®¸² ÇÚµéÀÌ ¹«È¿°¡ µË´Ï´Ù. ´Ù¸¸, readUnshared ·ÎºÎÅÍ µ¹·ÁÁÖ°íÁö´Â ÂüÁ¶°¡ ÀÏÀÇÀÌ´Ù°í´Â ÇÒ ¼ö ¾ø½À´Ï´Ù. Á÷·ÄÈ­ º¹¿øµÈ ¿ÀºêÁ§Æ®¿¡ readResolve ¸Þ¼­µå°¡ Á¤Àǵǰí ÀÖ¾úÀ» °æ¿ì, °øÀ¯µÇ°í ÀÖ´Â ¿ÀºêÁ§Æ®°¡ µ¹·ÁÁÖ°íÁö´Â ÀÏÀÌ ÀÖ½À´Ï´Ù. ¶Ç, ±× ½ºÆ®¸²¿ÜÀÇ Àå¼Ò³ª ¿ÜºÎ·ÎºÎÅÍ ÃëµæÇÑ Class ¿ÀºêÁ§Æ® ¶Ç´Â enum Á¤¼ö¸¦ µ¹·ÁÁÖ´Â Àϵµ ÀÖ½À´Ï´Ù.

´Ù¸¸, º¹¿øµÈ ¿ÀºêÁ§Æ®°¡ enum Á¤¼ö ¶Ç´Â java.lang.Class ÀνºÅϽº´Â ¾Æ´Ï°í, readResolve ¸Þ¼­µå¸¦ Á¤ÀÇÇϰí ÀÖÁö ¾Ê´Â °æ¿ì, readUnshared ·ÎºÎÅÍ µ¹·ÁÁÖ°íÁö´Â ¿ÀºêÁ§Æ® ÂüÁ¶´Â Ç×»ó ÀÏÀÇÀÔ´Ï´Ù. ¹ÙÅÁÀ¸·Î µÇ´Â µ¥ÀÌÅÍ ½ºÆ®¸²ÀÌ Á¶À۵ǰí ÀÖ´Â °æ¿ì¿¡¼­µµ, ±×°ÍÀ» ÀÛ¼ºÇÑ ObjectInputStream ·ÎºÎÅÍ ¿ÀºêÁ§Æ® ÂüÁ¶¸¦ ÀçÂ÷ ÃëµæÇÒ ¼ö ¾ø½À´Ï´Ù. ÀÌ ±ÔÄ¢Àº, readUnshared ·ÎºÎÅÍ µ¹·ÁÁÖ°íÁø º£À̽º ·¹º§ÀÇ ¿ÀºêÁ§Æ®ÀÎ ¸¸Å­ Àû¿ëµÇ¾î µ¹·ÁÁÖ°íÁø ¿ÀºêÁ§Æ® ±×·¡ÇÁ³»¿¡¼­ ÂüÁ¶µÇ´Â ¼­ºê ¿ÀºêÁ§Æ®¿¡´Â Àû¿ëµÇÁö ¾Ê½À´Ï´Ù.

ÀÌ ¸Þ¼­µå¸¦ ¿À¹ö¶óÀ̵å(override) ÇÏ´Â ObjectInputStream ¼­ºê Ŭ·¡½º´Â SerializablePermission("enableSubclassImplementation")¸¦ °¡Áö´Â ½ÃÅ¥·¯Æ¼ ÄÁÅØ½ºÆ® ³»¿¡¼­¸¸ ±¸ÃàÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ¾×¼¼½º±ÇÀ» °¡ÁöÁö ¾Ê´Â ½ÃÅ¥·¯Æ¼ ÄÁÅØ½ºÆ® À¸·Î ÀνºÅϽºÈ­ÇÏ·Á°í Çϸé, SecurityException °¡ Throw µË´Ï´Ù.

¹Ýȯ°ª:
Á÷·ÄÈ­ º¹¿ø ¿ÀºêÁ§Æ®¿¡ÀÇ ÂüÁ¶
¿¹¿Ü:
ClassNotFoundException - Á÷·ÄÈ­ º¹¿øÇÏ´Â ¿ÀºêÁ§Æ®ÀÇ Å¬·¡½º°¡ ¹ß°ßµÇÁö ¾Ê¾Ò´ø °æ¿ì
StreamCorruptedException - ½ºÆ®¸²ÀÇ Á¦¾î Á¤º¸¿¡ Àϰü¼ºÀÌ ¾ø´Â °æ¿ì
ObjectStreamException - Á÷·ÄÈ­ º¹¿øÇÏ´Â ¿ÀºêÁ§Æ®°¡ ¹ú½á ½ºÆ®¸²³»¿¡ ÀÖ¾úÀ» °æ¿ì
OptionalDataException - ½ºÆ®¸²³»ÀÇ ´ÙÀ½ÀÇ µ¥ÀÌÅͰ¡ ¿ø½ÃÀûÀÇ °æ¿ì
IOException - Á÷·ÄÈ­ º¹¿øÁß¿¡ ÀÔÃâ·Â ¿¡·¯°¡ ¹ß»ýÇßÀ» °æ¿ì

defaultReadObject

public void defaultReadObject()
                       throws IOException,

                              ClassNotFoundException 
ÇöÀçÀÇ Å¬·¡½ºÀÇ ºñ static ¹× ºñ transient Çʵ带, ÀÌ ½ºÆ®¸²·ÎºÎÅÍ ÀоîµéÀÔ´Ï´Ù. ÀÌ ¸Þ¼­µå¸¦ È£ÃâÇÒ ¼ö°¡ ÀÖ´Â °ÍÀº, Á÷·ÄÈ­°¡ º¹¿øµÇ°í Àִ Ŭ·¡½ºÀÇ readObject ¸Þ¼­µå »ÓÀÔ´Ï´Ù. ´Ù¸¥ ¹æ¹ýÀ¸·Î ºÒ·Á °¬À» °æ¿ì´Â NotActiveException¸¦ Throw ÇÕ´Ï´Ù.

¿¹¿Ü:
ClassNotFoundException - Á÷·ÄÈ­ µÈ ¿ÀºêÁ§Æ®ÀÇ Å¬·¡½º°¡ ¹ß°ßµÇÁö ¾Ê¾Ò´ø °æ¿ì
IOException - ÀÔÃâ·Â ¿¡·¯°¡ ¹ß»ýÇßÀ» °æ¿ì
NotActiveException - ½ºÆ®¸²ÀÌ ÇöÀç ¿ÀºêÁ§Æ®¸¦ ÀоîµéÀÌÁö ¾ÊÀº °æ¿ì

readFields

public ObjectInputStream.GetField  readFields()
                                      throws IOException,

                                             ClassNotFoundException 
½ºÆ®¸²·ÎºÎÅÍ Áö¼Ó Çʵ带 Àоîµé¿©, ±×°ÍµéÀ» À̸§À» ÁöÁ¤ÇØ ¾×¼¼½º ÇÒ ¼ö ÀÖµµ·Ï ÇÕ´Ï´Ù.

¹Ýȯ°ª:
Á÷·ÄÈ­ º¹¿øµÇ°í ÀÖ´Â ¿ÀºêÁ§Æ®ÀÇ Áö¼Ó Çʵ带 ³ªÅ¸³»´Â GetField ¿ÀºêÁ§Æ®
¿¹¿Ü:
ClassNotFoundException - Á÷·ÄÈ­ µÈ ¿ÀºêÁ§Æ®ÀÇ Å¬·¡½º°¡ ¹ß°ßµÇÁö ¾Ê¾Ò´ø °æ¿ì
IOException - ÀÔÃâ·Â ¿¡·¯°¡ ¹ß»ýÇßÀ» °æ¿ì
NotActiveException - ½ºÆ®¸²ÀÌ ÇöÀç ¿ÀºêÁ§Æ®¸¦ ÀоîµéÀÌÁö ¾ÊÀº °æ¿ì
µµÀÔµÈ ¹öÁ¯:
1.2

registerValidation

public void registerValidation(ObjectInputValidation  obj,
                               int prio)
                        throws NotActiveException,

                               InvalidObjectException 
¿ÀºêÁ§Æ® ±×·¡ÇÁ°¡ µ¹·ÁÁÖ°íÁö±â Àü¿¡ °ËÁõµÇ¾î¾ß ÇÒ ¿ÀºêÁ§Æ®¸¦ µî·ÏÇÕ´Ï´Ù. ÀÌ °ËÁõÀº, resolveObject¸¦ ´à¾Æ ÀÖ½À´Ï´Ù¸¸, ¿ÀºêÁ§Æ® ±×·¡ÇÁ Àüü°¡ À籸Ãà µÈ µÚ¿¡ ºÒ·Á °¡´Â Á¡ÀÌ ´Ù¸¨´Ï´Ù. º¸Åë , readObject ¸Þ¼­µå´Â ½ºÆ®¸²°ú ÇÔ²² ¿ÀºêÁ§Æ®¸¦ µî·ÏÇØ, °Å±â¿¡ µû¶ó ¿ÀºêÁ§Æ®ÀÇ ¸ðµç °ÍÀÌ º¹¿øµÇ¾úÀ» ¶§¿¡ ÃÖÁ¾ÀûÀÎ °ËÁõÀ» ½ÇÇàÇÒ ¼ö ÀÖµµ·Ï ÇÕ´Ï´Ù.

ÆÄ¶ó¹ÌÅÍ:
obj - °ËÁõÀÇ ÄݹéÀ» ¹Þ´Â ¿ÀºêÁ§Æ®
prio - ÄݹéÀÇ ¼ø¼­¸¦ Á¦¾îÇÏ´Â °ª. 0 ÀÌ ÀûÀýÇÑ µðÆúƮġÀÌ´Ù. »¡¸® Äݹé ÇÏ´Â °æ¿ì´Â Å« ¹øÈ£¸¦, ³ªÁß¿¡ Äݹé ÇÏ´Â °æ¿ì´Â ÀÛÀº ¹øÈ£¸¦ »ç¿ëÇÑ´Ù. °°Àº ¿ì¼± ¼øÀ§³»¿¡¼­´Â ÄݹéÀÇ Ã³¸®¿¡ Ưº°ÇÑ ¼ø¼­´Â ¾ø´Ù
¿¹¿Ü:
NotActiveException - ½ºÆ®¸²ÀÌ ÇöÀç ¿ÀºêÁ§Æ®¸¦ ÀоîµéÀÌÁö ¾Ê±â ¶§¹®¿¡ ÄݹéÀ» µî·ÏÇÒ ¼ö ¾ø´Â °æ¿ì
InvalidObjectException - °ËÁõ ¿ÀºêÁ§Æ®°¡ null °æ¿ì

resolveClass

protected Class <? > resolveClass(ObjectStreamClass  desc)
                         throws IOException,

                                ClassNotFoundException 
ÁöÁ¤µÈ ½ºÆ®¸² Ŭ·¡½ºÀÇ ±â¼ú¿¡ ´ëÀÀÇÏ´Â ·ÎÄà Ŭ·¡½º¸¦ ·ÎµåÇÕ´Ï´Ù. ¼­ºê Ŭ·¡½º´Â ÀÌ ¸Þ¼­µå¸¦ ±¸ÇöÇØ, ´ëü ¼Ò½º·ÎºÎÅÍ Å¬·¡½º¸¦ ÃëµæÇÕ´Ï´Ù.

ObjectOutputStream ´ëÀÀÇÏ´Â ¸Þ¼­µå´Â annotateClass ÀÔ´Ï´Ù. ÀÌ ¸Þ¼­µå´Â ½ºÆ®¸²ÀÇ ÀÏÀÇÀÇ Å¬·¡½º °¢°¢ ºÙ¾î 1 ȸ¸¸ ºÒ·Á °©´Ï´Ù. ÀÌ ¸Þ¼­µå´Â ´ëüÀÇ ·Îµå µµ±¸ ¸¦ »ç¿ëÇϱâ À§Çؼ­ ±¸ÇöÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù¸¸,Class ¿ÀºêÁ§Æ®¸¦ µ¹·ÁÁÙ Çʿ䰡 ÀÖ½À´Ï´Ù. Ŭ·¡½º ¿ÀºêÁ§Æ®°¡ µ¹·ÁÁÖ°íÁö¸é, ±× Ŭ·¡½ºÀÇ serialVersionUID °¡, Á÷·ÄÈ­ µÈ Ŭ·¡½ºÀÇ serialVersionUID ¶ó°í ºñ±³µË´Ï´Ù. ºÒÀÏÄ¡°¡ ÀÖÀ¸¸é, Á÷·ÄÈ­ º¹¿ø¿¡ ºÒÆíÀÌ ¹ß»ýÇØ, ¿¹¿Ü°¡ ºÒ·Á °©´Ï´Ù.

µðÆúÆ®¿¡¼­´Â Ŭ·¡½º¸íÀº,readObject¸¦ È£ÃâÇÑ Å¬·¡½º¿Í ´ëÀÀ ºÙ¿© ÇØ°áµË´Ï´Ù.

ÆÄ¶ó¹ÌÅÍ:
desc - ObjectStreamClass Ŭ·¡½ºÀÇ ÀνºÅϽº
¹Ýȯ°ª:
desc ¿¡ ´ëÀÀÇÏ´Â Class ¿ÀºêÁ§Æ®
¿¹¿Ü:
IOException - º¸Åë ÀÇ ÀÔÃâ·Â °ü·ÃÀÇ ¿¹¿Ü°¡ ¹ß»ýÇßÀ» °æ¿ì
ClassNotFoundException - Á÷·ÄÈ­ µÈ ¿ÀºêÁ§Æ®°¡ ¹ß°ßµÇÁö ¾Ê¾Ò´ø °æ¿ì

resolveProxyClass

protected Class <? > resolveProxyClass(String [] interfaces)
                              throws IOException,

                                     ClassNotFoundException 
ÇÁ·Ï½Ã Ŭ·¡½º ±â¼úÀÚ·Î ÁöÁ¤µÈ ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÏ´Â ÇÁ·Ï½Ã Ŭ·¡½º¸¦ µ¹·ÁÁÝ´Ï´Ù. ¼­ºê Ŭ·¡½º´Â ÀÌ ¸Þ¼­µå¸¦ ±¸ÇöÇØ ´ÙÀ̳ª¹Í ÇÁ·Ï½Ã Ŭ·¡½ºÀÇ ±â¼úÀÚ¿Í ÇÔ²² ½ºÆ®¸²·ÎºÎÅÍ Ä¿½ºÅÒ µ¥ÀÌÅ͸¦ Àоîµé¿©, ÀÎÅÍÆäÀ̽º³ª ÇÁ·Ï½Ã Ŭ·¡½ºÀÇ ´ëü ·Îµù µµ±¸ ¸¦ »ç¿ëÇÒ ¼ö ÀÖµµ·Ï ÇÕ´Ï´Ù.

ÀÌ ¸Þ¼­µå´Â ½ºÆ®¸²ÀÇ ÀÏÀÇÀÇ °¢ ÇÁ·Ï½Ã Ŭ·¡½º ±â¼úÀÚ¿¡ ´ëÇØ 1 ȸ¸¸ ºÒ·Á °©´Ï´Ù.

ObjectOutputStream ¿¡¼­ÀÇ ´ëÀÀÇÏ´Â ¸Þ¼­µå´Â annotateProxyClass ÀÔ´Ï´Ù. ÀÌ ¸Þ¼­µå¸¦ ¿À¹ö¶óÀ̵å(override) ÇÏ´Â ÁöÁ¤µÈ ¼­ºê Ŭ·¡½º ObjectInputStream ¿¡ ´ëÇØ¼­,ObjectOutputStream ´ëÀÀÇÏ´Â ¼­ºê Ŭ·¡½º¿¡ ÀÖ´Â annotateProxyClass ¸Þ¼­µå´Â ÀÌ ¸Þ¼­µå°¡ ÀоîµéÀÌ´Â ÀÓÀÇÀÇ µ¥ÀÌÅÍ ¶Ç´Â ¿ÀºêÁ§Æ®¸¦ ±âÀÔÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.

ObjectInputStream ¿¡ ÀÖ´Â ÀÌ ¸Þ¼­µåÀÇ µðÆúÆ® ±¸ÇöÀº,interfaces ÆÄ¶ó¹ÌÅÍ·Î ÁöÁ¤µÈ ÀÎÅÍÆäÀ̽ºÀÇ Class ¿ÀºêÁ§Æ®ÀÇ ¸®½ºÆ®¿Í ÇÔ²² Proxy.getProxyClass È£Ãâ °á°ú¸¦ µ¹·ÁÁÝ´Ï´Ù. °¢ ÀÎÅÍÆäÀ̽º¸í i Class ¿ÀºêÁ§Æ®°¡ µ¹·ÁÁÖ°íÁý´Ï´Ù.


     Class.forName(i, false, loader)
 
¿©±â¼­ loader´Â ½ÇÇà ½ºÅñîÁöÀÇ ÃÖÃÊÀÇ null °¡ ¾Æ´Ñ Ŭ·¡½º, ¶Ç´Â null °¡ ¾Æ´Ñ Ŭ·¡½º ·Î´õ°¡ ½ºÅÃÃø (resolveClass ¸Þ¼­µå°¡ »ç¿ëÇÏ´Â °°Àº Ŭ·¡½º ·Î´õÀÇ ¼±ÅÃ)¿¡ ¾ø´Â °æ¿ì´Â null ÀÔ´Ï´Ù. ÇØ°áµÈ ÀÎÅÍÆäÀ̽º°¡ public °¡ ¾Æ´Ñ °æ¿ì´Â °°Àº °ªÀÇ loader °¡ Proxy.getProxyClass ¿¡°Ô °Ç³×Áý´Ï´Ù. public °¡ ¾Æ´Ñ ÀÎÅÍÆäÀ̽º°¡ ÀÖ´Â °æ¿ì´Â ±× Ŭ·¡½º ·Î´õ°¡ °Ç³×¹Þ½À´Ï´Ù (public °¡ ¾Æ´Ñ ÀÎÅÍÆäÀ̽ºÀÇ Å¬·¡½º ·Î´õ°¡ º¹¼ö °ËÃâµÇ¾úÀ» °æ¿ì´Â IllegalAccessError °¡ Throw µÈ´Ù). Proxy.getProxyClass °¡ IllegalArgumentException¸¦ Throw Çϸé,resolveProxyClass´Â IllegalArgumentException ¿Í ÇÔ²² ClassNotFoundException¸¦ Throw ÇÕ´Ï´Ù.

ÆÄ¶ó¹ÌÅÍ:
interfaces - ÇÁ·Ï½Ã Ŭ·¡½º ±â¼úÀÚ¿¡°Ô Á÷·ÄÈ­ º¹¿øµÈ ÀÎÅÍÆäÀ̽º¸íÀÇ ¸®½ºÆ®
¹Ýȯ°ª:
ÁöÁ¤µÈ ÀÎÅÍÆäÀ̽ºÀÇ ÇÁ·Ï½Ã Ŭ·¡½º
¿¹¿Ü:
IOException - ±âº»ÀÌ µÇ´Â InputStream ¿¡ ¿¹¿Ü°¡ ¹ß»ýÇßÀ» °æ¿ì
ClassNotFoundException - ÇÁ·Ï½Ã Ŭ·¡½º ¶Ç´Â ÁöÁ¤µÈ ÀÎÅÍÆäÀ̽º°¡ ¾î´À °Íµµ ¹ß°ßµÇÁö ¾Ê¾Ò´ø °æ¿ì
µµÀÔµÈ ¹öÁ¯:
1.3
°ü·Ã Ç׸ñ:
ObjectOutputStream.annotateProxyClass(Class)

resolveObject

protected Object  resolveObject(Object  obj)
                        throws IOException 
Á÷·ÄÈ­ º¹¿ø ½Ã¿¡ ObjectInputStream ½Å·ÚÇÒ ¼ö ÀÖ´Â ¼­ºê Ŭ·¡½º°¡, ¾î´À ¿ÀºêÁ§Æ®¸¦ ´Ù¸¥ ¿ÀºêÁ§Æ®¿¡ ġȯÇÒ ¼ö ÀÖµµ·Ï ÇÕ´Ï´Ù. ¿ÀºêÁ§Æ®ÀÇ Ä¡È¯Àº, enableResolveObject °¡ ºÒ·Á °¥ ¶§±îÁö´Â ½Ç½ÃÇÒ ¼ö ¾ø½À´Ï´Ù. enableResolveObject ¸Þ¼­µå´Â ¿ÀºêÁ§Æ®ÀÇ ÇØ¼® 󸮸¦ ¿ä±¸Çϰí ÀÖ´Â ½ºÆ®¸²À» ½Å·ÚÇÒ ¼ö ÀÖÀ»Áö ¾î¶³Áö¸¦ Á¶»çÇÕ´Ï´Ù. Á÷·ÄÈ­ °¡´É ¿ÀºêÁ§Æ®¿¡ÀÇ ¸ðµç ÂüÁ¶´Â resolveObject ¿¡°Ô °Ç³×Áý´Ï´Ù. ¿ÀºêÁ§Æ®ÀÇ private ÀÎ »óŰ¡ µµÇÏÁö ¾Ê°í ´©¼³ ÇÏ´Â °ÍÀÌ ¾ø°Ô, resolveObject¸¦ »ç¿ëÇÏ´Â °ÍÀº ½Å·ÚÇÒ ¼ö ÀÖ´Â ½ºÆ®¸²·Î ÇÑÁ¤µË´Ï´Ù.

ÀÌ ¸Þ¼­µå´Â ¿ÀºêÁ§Æ®°¡ ÀÐÈù µÚ, readObject ·ÎºÎÅÍ º¹±ÍÇϱâ Àü¿¡ ºÒ·Á °©´Ï´Ù. µðÆúÆ®ÀÇ resolveObject ¸Þ¼­µå´Â °°Àº ¿ÀºêÁ§Æ®¸¸À» µ¹·ÁÁÝ´Ï´Ù.

¼­ºê Ŭ·¡½º´Â ¿ÀºêÁ§Æ®¸¦ ġȯÇÒ ¶§, ġȯµÈ ¿ÀºêÁ§Æ®¿Í ÂüÁ¶°¡ Æ÷ÇԵǴ °¢ Çʵå¿ÍÀÇ È£È¯¼ºÀ» º¸ÁõÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù. ÇÊµå ¶Ç´Â ¹è¿­ ¿ä¼ÒÀÇ ÇüÅÂÀÇ ¼­ºê Ŭ·¡½º°¡ ¾Æ´Ñ ÇüÅÂÀÇ ¿ÀºêÁ§Æ®´Â ¿¹¿Ü¸¦ ¹ß»ý½ÃŰ´Â °Í¿¡ ÇØ Á÷·ÄÈ­¸¦ Áß´ÜÇØ, ±× °á°ú ¿ÀºêÁ§Æ®´Â Æ÷ÇÔµÇÁö ¾Ê½À´Ï´Ù.

ÀÌ ¸Þ¼­µå´Â °¢ ¿ÀºêÁ§Æ®°¡ ÃÖÃÊ·Î °ËÃâµÇ¾úÀ» ¶§¿¡ 1 ȸ¸¸ ºÒ·Á °©´Ï´Ù. ÀÌ°Í ÀÌÈÄ °ËÃâµÇ´Â ±× ¿ÀºêÁ§Æ®¿¡ÀÇ ÂüÁ¶´Â »õ·Î¿î ¿ÀºêÁ§Æ®¿¡ ¸®µð·ºÆ® µË´Ï´Ù.

ÆÄ¶ó¹ÌÅÍ:
obj - ġȯµÇ´Â ¿ÀºêÁ§Æ®
¹Ýȯ°ª:
ġȯµÈ ¿ÀºêÁ§Æ®
¿¹¿Ü:
IOException - º¸Åë ÀÇ ÀÔÃâ·Â °ü·ÃÀÇ ¿¹¿Ü°¡ ¹ß»ýÇßÀ» °æ¿ì

enableResolveObject

protected boolean enableResolveObject(boolean enable)
                               throws SecurityException 
½ºÆ®¸²·ÎºÎÅÍ ÀÐÈù ¿ÀºêÁ§Æ®°¡ ġȯµË´Ï´Ù. À¯È¿ÇÏ°Ô Çϸé, ¿ÀºêÁ§Æ®°¡ Á÷·ÄÈ­ º¹¿øµÉ ¶§, Ç×»ó resolveObject ¸Þ¼­µå°¡ ºÒ·Á °©´Ï´Ù.

enable °¡ true ·Î ½ÃÅ¥·¯Æ¼ ¸Å´ÏÀú°¡ ÀνºÅç µÇ°í ÀÖ´Â °æ¿ì, ÀÌ ¸Þ¼­µå´Â ¿ì¼± ½ÃÅ¥·¯Æ¼ ¸Å´ÏÀúÀÇ checkPermission ¸Þ¼­µå¸¦ ¾×¼¼½º±Ç SerializablePermission("enableSubstitution") ·Î È£ÃâÇØ, ½ºÆ®¸²·ÎºÎÅÍ ÀÐÈù ¿ÀºêÁ§Æ®ÀÇ Ä¡È¯À» ½ºÆ®¸²À» Çã°¡ÇÒ ¼ö ÀÖµµ·Ï ÇÕ´Ï´Ù.

ÆÄ¶ó¹ÌÅÍ:
enable - Á÷·ÄÈ­ º¹¿øµÇ´Â °¢ ¿ÀºêÁ§Æ®¿¡ ´ëÇØ resolveObject »ç¿ëÀ» À¯È¿ÇÏ°Ô ÇÏ´Â °æ¿ì´Â true
¹Ýȯ°ª:
ÀÌ ¸Þ¼­µå°¡ ºÒ·Á °¡±â ÀüÀÇ ¼³Á¤
¿¹¿Ü:
SecurityException - ½ÃÅ¥·¯Æ¼ ¸Å´ÏÀú°¡ Á¸ÀçÇØ, ±× checkPermission ¸Þ¼­µå°¡, ½ºÆ®¸²·ÎºÎÅÍ ÀÐÈù ¿ÀºêÁ§Æ®ÀÇ Ä¡È¯À» ½ºÆ®¸²À» Çã°¡ÇÒ ¼ö ÀÖµµ·Ï ÇÏ´Â °ÍÀ» °ÅºÎÇÏ´Â °æ¿ì
°ü·Ã Ç׸ñ:
SecurityManager.checkPermission(java.security.Permission), SerializablePermission

readStreamHeader

protected void readStreamHeader()
                         throws IOException,

                                StreamCorruptedException 
¼­ºê Ŭ·¡½º°¡ ÀÚ½ÅÀÇ ½ºÆ®¸² Çì´õÀÇ read¿Í °ËÁõÀ» ½Ç½ÃÇÒ ¼ö ÀÖµµ·Ï Çϱâ À§Çؼ­ Á¦°øµÇ°í ÀÖ½À´Ï´Ù. ÀÌ ¸Þ¼­µå´Â ¸ÅÁ÷ ¹øÈ£¿Í ¹öÁ¯ ¹øÈ£¸¦ ÀоîµéÀÔ´Ï´Ù.

¿¹¿Ü:
IOException - ±âº»ÀÌ µÇ´Â InputStream readÁß¿¡ ÀÔÃâ·Â ¿¡·¯°¡ ¹ß»ýÇßÀ» °æ¿ì
StreamCorruptedException - ½ºÆ®¸²ÀÇ Á¦¾î Á¤º¸¿¡ Àϰü¼ºÀÌ ¾ø´Â °æ¿ì

readClassDescriptor

protected ObjectStreamClass  readClassDescriptor()
                                         throws IOException,

                                                ClassNotFoundException 
Á÷·ÄÈ­ ½ºÆ®¸²·ÎºÎÅÍ Å¬·¡½º ±â¼úÀÚ¸¦ ÀоîµéÀÔ´Ï´Ù. ÀÌ ¸Þ¼­µå´Â ObjectInputStream °¡ Á÷·ÄÈ­ ½ºÆ®¸²ÀÇ ´ÙÀ½ÀÇ ¾ÆÀÌÅÛÀ¸·Î¼­ Ŭ·¡½º ±â¼úÀÚ¸¦ ¿ä±¸ÇÏ¸é ºÒ·Á °©´Ï´Ù. ObjectInputStream ¼­ºê Ŭ·¡½º´Â ÀÌ ¸Þ¼­µå¸¦ ¿À¹ö¶óÀ̵å(override) ÇØ Ç¥ÁØÀÌ ¾Æ´Ñ Çü½Ä¿¡¼­ (writeClassDescriptor ¸Þ¼­µå¸¦ ¿À¹ö¶óÀ̵å(override) ÇÑ ObjectOutputStream ¼­ºê Ŭ·¡½º¿¡ ÇØ) ±âÀÔÇØÁø Ŭ·¡½º ±â¼úÀÚ¿¡°Ô ÀоîµéÀÔ´Ï´Ù. µðÆúÆ®¿¡¼­´Â ÀÌ ¸Þ¼­µå´Â Ŭ·¡½º ±â¼úÀÚ¸¦ ¿ÀºêÁ§Æ® Á÷·ÄÈ­ »ç¾ç¿¡ Á¤ÀÇµÈ Çü½Ä¿¡¼­ ÀоîµéÀÔ´Ï´Ù.

¹Ýȯ°ª:
ÀÐÈù Ŭ·¡½º ±â¼úÀÚ
¿¹¿Ü:
IOException - ÀÔÃâ·Â ¿¡·¯°¡ ¹ß»ýÇßÀ» °æ¿ì
ClassNotFoundException - Ŭ·¡½º ±â¼úÀÚ Ç¥Çö¿¡ »ç¿ëÇÑ Á÷·ÄÈ­ µÈ ¿ÀºêÁ§Æ®ÀÇ Å¬·¡½º°¡ ¹ß°ßµÇÁö ¾Ê¾Ò´ø °æ¿ì
µµÀÔµÈ ¹öÁ¯:
1.3
°ü·Ã Ç׸ñ:
ObjectOutputStream.writeClassDescriptor(java.io.ObjectStreamClass)

read

public int read()
         throws IOException 
µ¥ÀÌÅÍÀÇ ¹ÙÀÌÆ®¸¦ ÀоîµéÀÔ´Ï´Ù. ÀÌ ¸Þ¼­µå´Â À¯È¿ÇÑ ÀÔ·ÂÀÌ ¾ÆÁ÷ ¾ø´Â °æ¿ì´Â ºí·Ï ÇÕ´Ï´Ù.

Á¤ÀÇ:
ÀÎÅÍÆäÀ̽º ObjectInput ³»ÀÇ read
Á¤ÀÇ:
Ŭ·¡½º InputStream ³»ÀÇ read
¹Ýȯ°ª:
ÀÐÈù ¹ÙÀÌÆ®. ½ºÆ®¸²ÀÇ ¸¶Áö¸·¿¡ À̸£·¶À» °æ¿ì´Â -1
¿¹¿Ü:
IOException - ÀÔÃâ·Â ¿¡·¯°¡ ¹ß»ýÇßÀ» °æ¿ì

read

public int read(byte[] buf,
                int off,
                int len)
         throws IOException 
¹ÙÀÌÆ®ÀÇ ¹è¿­¿¡ ÀоîµéÀÔ´Ï´Ù. ÀÌ ¸Þ¼­µå´Â ÀÔ·ÂÀ» ÇÒ ¼ö ÀÖ°Ô µÉ ¶§±îÁö ºí·Ï ÇÕ´Ï´Ù. ¹ÙÀÌÆ®ÀÇ ±æÀ̸¦ Á¤È®ÇÏ°Ô ÀоîµéÀÌ·Á¸é, java.io.DataInputStream.readFully¸¦ »ç¿ëÇØ ÁÖ¼¼¿ä.

Á¤ÀÇ:
ÀÎÅÍÆäÀ̽º ObjectInput ³»ÀÇ read
¿À¹ö¶óÀ̵å(override):
Ŭ·¡½º InputStream ³»ÀÇ read
ÆÄ¶ó¹ÌÅÍ:
buf - µ¥ÀÌÅÍÀÇ µ¶ÇØÃ³ÀÇ ¹öÆÛ
off - µ¥ÀÌÅÍÀÇ °³½Ã ¿ÀÇÁ¼Â(offset)
len - ÀÐÈ÷´Â ÃÖ´ë ¹ÙÀÌÆ®¼ö
¹Ýȯ°ª:
ÀÐÈ÷´Â ¹ÙÀÌÆ®ÀÇ ½ÇÁ¦ÀÇ ¼ö. ½ºÆ®¸²ÀÇ ¸¶Áö¸·¿¡ À̸£·¶À» °æ¿ì´Â -1
¿¹¿Ü:
IOException - ÀÔÃâ·Â ¿¡·¯°¡ ¹ß»ýÇßÀ» °æ¿ì
°ü·Ã Ç׸ñ:
DataInputStream.readFully(byte[], int, int)

available

public int available()
              throws IOException 
ºí·Ï ÇÏÁö ¾Ê°í ÀоîµéÀÏ ¼ö°¡ ÀÖ´Â ¹ÙÀÌÆ®¼ö¸¦ µ¹·ÁÁÝ´Ï´Ù.

Á¤ÀÇ:
ÀÎÅÍÆäÀ̽º ObjectInput ³»ÀÇ available
¿À¹ö¶óÀ̵å(override):
Ŭ·¡½º InputStream ³»ÀÇ available
¹Ýȯ°ª:
Àоîµé¿© °¡´ÉÇÑ ¹ÙÀÌÆ®¼ö
¿¹¿Ü:
IOException - ±âº»ÀÌ µÇ´Â InputStream readÁß¿¡ ÀÔÃâ·Â ¿¡·¯°¡ ¹ß»ýÇßÀ» °æ¿ì

close

public void close()
           throws IOException 
ÀÔ·Â ½ºÆ®¸²À» ´Ý½À´Ï´Ù. ½ºÆ®¸²¿¡ °ü·ÃµÈ ¸ðµç ÀÚ¿øÀ» ÇØ¹æÇϱâ À§Çؼ­ È£ÃâÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.

Á¤ÀÇ:
ÀÎÅÍÆäÀ̽º Closeable ³»ÀÇ close
Á¤ÀÇ:
ÀÎÅÍÆäÀ̽º ObjectInput ³»ÀÇ close
¿À¹ö¶óÀ̵å(override):
Ŭ·¡½º InputStream ³»ÀÇ close
¿¹¿Ü:
IOException - ÀÔÃâ·Â ¿¡·¯°¡ ¹ß»ýÇßÀ» °æ¿ì

readBoolean

public boolean readBoolean()
                    throws IOException 
boolean¸¦ ÀоîµéÀÔ´Ï´Ù.

Á¤ÀÇ:
ÀÎÅÍÆäÀ̽º DataInput ³»ÀÇ readBoolean
¹Ýȯ°ª:
ÀÐÈ÷´Â boolean Ä¡
¿¹¿Ü:
EOFException - ÆÄÀÏÀÇ ¸¶Áö¸·¿¡ À̸£·¶À» °æ¿ì
IOException - ´Ù¸¥ ÀÔÃâ·Â ¿¡·¯°¡ ¹ß»ýÇßÀ» °æ¿ì

readByte

public byte readByte()
              throws IOException 
8 ºñÆ®ÀÇ ¹ÙÀÌÆ®¸¦ ÀоîµéÀÔ´Ï´Ù.

Á¤ÀÇ:
ÀÎÅÍÆäÀ̽º DataInput ³»ÀÇ readByte
¹Ýȯ°ª:
ÀÐÈ÷´Â 8 ºñÆ®ÀÇ ¹ÙÀÌÆ®Ä¡
¿¹¿Ü:
EOFException - ÆÄÀÏÀÇ ¸¶Áö¸·¿¡ À̸£·¶À» °æ¿ì
IOException - ´Ù¸¥ ÀÔÃâ·Â ¿¡·¯°¡ ¹ß»ýÇßÀ» °æ¿ì

readUnsignedByte

public int readUnsignedByte()
                     throws IOException 
ºÎÈ£ ¾øÀ½ 8 ºñÆ® ¹ÙÀÌÆ®¸¦ ÀоîµéÀÔ´Ï´Ù.

Á¤ÀÇ:
ÀÎÅÍÆäÀ̽º DataInput ³»ÀÇ readUnsignedByte
¹Ýȯ°ª:
ÀÐÈ÷´Â 8 ºñÆ®ÀÇ ¹ÙÀÌÆ®Ä¡
¿¹¿Ü:
EOFException - ÆÄÀÏÀÇ ¸¶Áö¸·¿¡ À̸£·¶À» °æ¿ì
IOException - ´Ù¸¥ ÀÔÃâ·Â ¿¡·¯°¡ ¹ß»ýÇßÀ» °æ¿ì

readChar

public char readChar()
              throws IOException 
16 ºñÆ®ÀÇ char¸¦ ÀоîµéÀÔ´Ï´Ù.

Á¤ÀÇ:
ÀÎÅÍÆäÀ̽º DataInput ³»ÀÇ readChar
¹Ýȯ°ª:
ÀÐÈ÷´Â 16 ºñÆ®ÀÇ char Ä¡
¿¹¿Ü:
EOFException - ÆÄÀÏÀÇ ¸¶Áö¸·¿¡ À̸£·¶À» °æ¿ì
IOException - ´Ù¸¥ ÀÔÃâ·Â ¿¡·¯°¡ ¹ß»ýÇßÀ» °æ¿ì

readShort

public short readShort()
                throws IOException 
16 ºñÆ®ÀÇ short¸¦ ÀоîµéÀÔ´Ï´Ù.

Á¤ÀÇ:
ÀÎÅÍÆäÀ̽º DataInput ³»ÀÇ readShort
¹Ýȯ°ª:
ÀÐÈ÷´Â 16 ºñÆ®ÀÇ short Ä¡
¿¹¿Ü:
EOFException - ÆÄÀÏÀÇ ¸¶Áö¸·¿¡ À̸£·¶À» °æ¿ì
IOException - ´Ù¸¥ ÀÔÃâ·Â ¿¡·¯°¡ ¹ß»ýÇßÀ» °æ¿ì

readUnsignedShort

public int readUnsignedShort()
                      throws IOException 
ºÎÈ£ ¾øÀ½ 16 ºñÆ®ÀÇ short¸¦ ÀоîµéÀÔ´Ï´Ù.

Á¤ÀÇ:
ÀÎÅÍÆäÀ̽º DataInput ³»ÀÇ readUnsignedShort
¹Ýȯ°ª:
ÀÐÈ÷´Â 16 ºñÆ®ÀÇ short Ä¡
¿¹¿Ü:
EOFException - ÆÄÀÏÀÇ ¸¶Áö¸·¿¡ À̸£·¶À» °æ¿ì
IOException - ´Ù¸¥ ÀÔÃâ·Â ¿¡·¯°¡ ¹ß»ýÇßÀ» °æ¿ì

readInt

public int readInt()
            throws IOException 
32 ºñÆ®ÀÇ int¸¦ ÀоîµéÀÔ´Ï´Ù.

Á¤ÀÇ:
ÀÎÅÍÆäÀ̽º DataInput ³»ÀÇ readInt
¹Ýȯ°ª:
ÀÐÈ÷´Â 32 ºñÆ®ÀÇ int Ä¡
¿¹¿Ü:
EOFException - ÆÄÀÏÀÇ ¸¶Áö¸·¿¡ À̸£·¶À» °æ¿ì
IOException - ´Ù¸¥ ÀÔÃâ·Â ¿¡·¯°¡ ¹ß»ýÇßÀ» °æ¿ì

readLong

public long readLong()
              throws IOException 
64 ºñÆ®ÀÇ long¸¦ ÀоîµéÀÔ´Ï´Ù.

Á¤ÀÇ:
ÀÎÅÍÆäÀ̽º DataInput ³»ÀÇ readLong
¹Ýȯ°ª:
ÀÐÈ÷´Â 64 ºñÆ®ÀÇ long Ä¡
¿¹¿Ü:
EOFException - ÆÄÀÏÀÇ ¸¶Áö¸·¿¡ À̸£·¶À» °æ¿ì
IOException - ´Ù¸¥ ÀÔÃâ·Â ¿¡·¯°¡ ¹ß»ýÇßÀ» °æ¿ì

readFloat

public float readFloat()
                throws IOException 
32 ºñÆ®ÀÇ float¸¦ ÀоîµéÀÔ´Ï´Ù.

Á¤ÀÇ:
ÀÎÅÍÆäÀ̽º DataInput ³»ÀÇ readFloat
¹Ýȯ°ª:
ÀÐÈ÷´Â 32 ºñÆ®ÀÇ float Ä¡
¿¹¿Ü:
EOFException - ÆÄÀÏÀÇ ¸¶Áö¸·¿¡ À̸£·¶À» °æ¿ì
IOException - ´Ù¸¥ ÀÔÃâ·Â ¿¡·¯°¡ ¹ß»ýÇßÀ» °æ¿ì

readDouble

public double readDouble()
                  throws IOException 
64 ºñÆ®ÀÇ double¸¦ ÀоîµéÀÔ´Ï´Ù.

Á¤ÀÇ:
ÀÎÅÍÆäÀ̽º DataInput ³»ÀÇ readDouble
¹Ýȯ°ª:
ÀÐÈ÷´Â 64 ºñÆ®ÀÇ double Ä¡
¿¹¿Ü:
EOFException - ÆÄÀÏÀÇ ¸¶Áö¸·¿¡ À̸£·¶À» °æ¿ì
IOException - ´Ù¸¥ ÀÔÃâ·Â ¿¡·¯°¡ ¹ß»ýÇßÀ» °æ¿ì

readFully

public void readFully(byte[] buf)
               throws IOException 
¹ÙÀÌÆ®¸¦ ÀоîµéÀÔ´Ï´Ù. ¸ðµç ¹ÙÀÌÆ®°¡ ÀÐÈú ¶§±îÁö ºí·Ï ÇÕ´Ï´Ù.

Á¤ÀÇ:
ÀÎÅÍÆäÀ̽º DataInput ³»ÀÇ readFully
ÆÄ¶ó¹ÌÅÍ:
buf - µ¥ÀÌÅÍÀÇ µ¶ÇØÃ³ÀÇ ¹öÆÛ
¿¹¿Ü:
EOFException - ÆÄÀÏÀÇ ¸¶Áö¸·¿¡ À̸£·¶À» °æ¿ì
IOException - ´Ù¸¥ ÀÔÃâ·Â ¿¡·¯°¡ ¹ß»ýÇßÀ» °æ¿ì

readFully

public void readFully(byte[] buf,
                      int off,
                      int len)
               throws IOException 
¹ÙÀÌÆ®¸¦ ÀоîµéÀÔ´Ï´Ù. ¸ðµç ¹ÙÀÌÆ®°¡ ÀÐÈú ¶§±îÁö ºí·Ï ÇÕ´Ï´Ù.

Á¤ÀÇ:
ÀÎÅÍÆäÀ̽º DataInput ³»ÀÇ readFully
ÆÄ¶ó¹ÌÅÍ:
buf - µ¥ÀÌÅÍÀÇ µ¶ÇØÃ³ÀÇ ¹öÆÛ
off - µ¥ÀÌÅÍÀÇ °³½Ã ¿ÀÇÁ¼Â(offset)
len - ÀоîµéÀÌ´Â ÃÖ´ë ¹ÙÀÌÆ®¼ö
¿¹¿Ü:
EOFException - ÆÄÀÏÀÇ ¸¶Áö¸·¿¡ À̸£·¶À» °æ¿ì
IOException - ´Ù¸¥ ÀÔÃâ·Â ¿¡·¯°¡ ¹ß»ýÇßÀ» °æ¿ì

skipBytes

public int skipBytes(int len)
              throws IOException 
¹ÙÀÌÆ®¸¦ ½ºÅµ ÇÕ´Ï´Ù. ¸ðµç ¹ÙÀÌÆ®°¡ ½ºÅµ µÉ ¶§±îÁö ºí·Ï ÇÕ´Ï´Ù.

Á¤ÀÇ:
ÀÎÅÍÆäÀ̽º DataInput ³»ÀÇ skipBytes
ÆÄ¶ó¹ÌÅÍ:
len - ½ºÅµ ÇÏ´Â ¹ÙÀÌÆ®¼ö
¹Ýȯ°ª:
½ÇÁ¦·Î ½ºÅµ µÈ ¹ÙÀÌÆ®¼ö
¿¹¿Ü:
EOFException - ÆÄÀÏÀÇ ¸¶Áö¸·¿¡ À̸£·¶À» °æ¿ì
IOException - ´Ù¸¥ ÀÔÃâ·Â ¿¡·¯°¡ ¹ß»ýÇßÀ» °æ¿ì

readLine

@Deprecated 
public String  readLine()
                throws IOException 
ÃßõÇÏÁö ¾Ê½À´Ï´Ù .  ÀÌ ¸Þ¼­µå´Â ¹ÙÀÌÆ®¸¦ Á¤È®ÇÏ°Ô ¹®ÀÚ·Î º¯È¯ÇÏÁö ¾Ê½À´Ï´Ù. »ó¼¼ ¹× ´ëü ¸Þ¼­µå¿¡ ´ëÇØ¼­´Â DataInputStream¸¦ ÂüÁ¶ÇϽʽÿÀ.

\n, \r, \r\n, ¶Ç´Â EOF ·Î Á¾·áÇÏ´Â ÇàÀ» ÀоîµéÀÔ´Ï´Ù.

Á¤ÀÇ:
ÀÎÅÍÆäÀ̽º DataInput ³»ÀÇ readLine
¹Ýȯ°ª:
ÇàÀÇ Ä³¸¯ÅÍ ¶óÀÎÀÇ Ä«ÇÇ
¿¹¿Ü:
IOException - ±âº»ÀÌ µÇ´Â InputStream readÁß¿¡ ÀÔÃâ·Â ¿¡·¯°¡ ¹ß»ýÇßÀ» °æ¿ì

readUTF

public String  readUTF()
               throws IOException 
¼öÁ¤ UTF-8 Çü½ÄÀÇ Ä³¸¯ÅÍ ¶óÀÎÀ» ÀоîµéÀÔ´Ï´Ù.

Á¤ÀÇ:
ÀÎÅÍÆäÀ̽º DataInput ³»ÀÇ readUTF
¹Ýȯ°ª:
ij¸¯ÅÍ ¶óÀÎ
¿¹¿Ü:
IOException - ±âº»ÀÌ µÇ´Â InputStream readÁß¿¡ ÀÔÃâ·Â ¿¡·¯°¡ ¹ß»ýÇßÀ» °æ¿ì
UTFDataFormatException - ij¸¯ÅÍ ¶óÀÎÁßÀÇ read ¹ÙÀÌÆ®°¡, À¯È¿ÇÑ ¼öÁ¤ UTF-8 Çü½Ä¿¡¼­ encode µÈ ij¸¯ÅÍ ¶óÀÎ À̿ܿ¡¼­ ¸¸³µÀ» °æ¿ì

JavaTM 2 Platform
Standard Ed. 5.0

Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy µµ ÂüÁ¶ÇϽʽÿÀ.