¾È±Ô °øºÎ¹æ

Android > Android - ½ºÆ®¸²(stream) - ¹ÙÀÌÆ® Stream

µî·ÏÀÏ : 2017-07-05 11:01 Á¶È¸¼ö : 53,559

º¸Åë ½Ã½ºÅÛÀº ¿©·¯°¡Áö ÀÔÃâ·Â ÀåÄ¡¸¦ °¡Áö°í ÀÖ½À´Ï´Ù.

¿¹Àü¿¡´Â ÀÌ·± ÀÔÃâ·Â ÀåÄ¡¸¦ ´Ù·ê¶§ Àü¿ëÇÔ¼öµéÀÌ Á¸ÀçÇß½À´Ï´Ù. Àü¿ëÇÔ¼ö°¡ Á¸ÀçÇÑ´Ù´Â ¶æÀº ¾î¶² ÀÔÃâ·ÂÀ» »ç¿ëÇÒ¶§ ¾î¶² µ¥ÀÌÅÍ

Çü½ÄÀ» »ç¿ëÇÒ°ÍÀÎÁö°¡ ÀÌ¹Ì Á¤ÇØÁ®ÀÖ´Ù´Â ¶æÀ̱⵵ ÇÕ´Ï´Ù.

¿¹¸¦µé¾î, Å°º¸µå·Î Å°¸¦ ÀԷ¹޴ °æ¿ì, getch ¿Í °°Àº ÄܼÖÇÔ¼ö¸¦ »ç¿ëÇß°í ÀÌ ÇÔ¼ö´Â 4¹ÙÀÌÆ® Á¤¼öÇü µ¥ÀÌÅÍ °ªÀ» ¹ÝȯÇÏ¿© ÇÁ·Î±×·¡¸Ó´Â ÀÌ°ªÀ» ¹Þ¾Æ¼­

¿øÇÏ´Â Çü½ÄÀ¸·Î °¡°øÇÏ¿© ó¸®Çß½À´Ï´Ù. ÀÌ·¸µí ½Ã½ºÅÛÀÇ ´Ù¾çÇÑ ÀÔÃâ·ÂÀ» »ç¿ëÇϱâ À§Çؼ­´Â °¢°¢ÀÇ ÀÔÃâ·Â Àü¿ëÇÔ¼ö¿¡ ´ëÇؼ­ ¾Ë°í ÀÖ¾î¾ßÇϸç

°íÀ¯ÇÑ Æ¯¼ºÀ̳ª µ¥ÀÌÅÍ Çü½Äµµ ÇÁ·Î±×·¡¸Ó°¡ ÀÌÇظ¦ ÇؾßÁö¸¸ ±×°ÍÀ» »ç¿ëÇÒ¼ö ÀÖ´Â ÇüÅ¿´°í ÀÌ·¯ÇÑ ¹æ½ÄÀº ÀÔÃâ·Â ÇÁ·Î±×·¡¹ÖÀ» Èûµé°Ô ÇÏ´Â ¿ä¼Ò¿´½À´Ï´Ù.


°´Ã¼ÁöÇâ ±â¼úÀÌ ¹ßÀüÇϸ鼭 ÀÌ·± ÀÔÃâ·Â¿¡ ´ëÇÑ Ç¥ÁØÀûÀÎ ¹æ¾ÈÀ» ¸ð»öÇÏ´ø Áß¿¡ ¸ðµç ÀÔÃâ·ÂÀÇ ±â¹ÝÀÌ µÉ¼ö ÀÖ´Â ±â¼ú·Î¼­ "½ºÆ®¸²(stream)" À̶ó´Â °³³äÀÌ ¸¸µé¾îÁ³½À´Ï´Ù.

Áï, ½ºÆ®¸²Àº ±¸Ã¼Àû µ¥ÀÌÅÍ Çü½ÄÀÌ Á¤ÇØÁöÁö ¾ÊÀº µ¥ÀÌÅÍÀÇ ÀÔÃâ·Â È帧À» ÀǹÌÇϴ°ÍÀÔ´Ï´Ù.


½ºÆ®¸²Àº Ç¥ÁØÀûÀÎ ÀÔÃâ·Â Çü½ÄÀ» Á¦°øÇÏ´Â ±¸Á¶·Î µÇ¾î ÀÖ°í, ±¸Ã¼Àû ÀåÄ¡¿¡ ´ëÇÑ ÀÔÃâ·Â ±â´ÉµéÀº ±âº» ½ºÆ®¸² ±¸Á¶¸¦ È®ÀåÇؼ­ ºñ¾î ÀÖ´Â

°¢ ¸Þ¼Òµåµé¿¡ ³»¿ëÀ» ä¿ö³Ö¾î ±â´ÉÀ» ¿Ï¼ºÇÑ ÈÄ, ÇØ´ç ÀåÄ¡¸¦ »ç¿ëÇÒ¼ö ÀÖµµ·Ï Á¦°øµË´Ï´Ù. ÀÌ·¸°Ô µÇ¸é ÇÁ·Î±×·¡¸Ó´Â ÇØ´ç ÀåÄ¡¿¡ ´ëÇÑ ¿©·¯°¡Áö »çÀüÁö½Ä

¾øÀÌ ±âº» ½ºÆ®¸²ÀÇ Çü½Ä¸¸ ÀÌÇØÇÏ°í ÀÖ´Ù¸é ¾ó¸¶µçÁö ÇØ´ç ÀåÄ¡ÀÇ ÀÔÃâ·ÂÀ» »ç¿ëÇÒ¼ö ÀÖ½À´Ï´Ù.

°á·ÐÀûÀ¸·Î ½Ã½ºÅÛÀ» Á¦°øÇÏ´Â Ãø¿¡¼­´Â ¸ðµç ÀÔÃâ·ÂÀ» ½ºÆ®¸²À» ±â¹ÝÀ¸·Î ¼³°èÇؼ­ ÅëÀϼºÀ» À¯ÁöÇÒ¼ö ÀÖ°í ÇØ´ç ½Ã½ºÅÛÀÇ ÀÔÃâ·ÂÀ» »ç¿ëÇÏ´Â ÇÁ·Î±×·¡¸Ó´Â

½ºÆ®¸²ÀÇ °³³ä¸¸ °øºÎÇؼ­ ´Ù¾çÇÑ ÀåÄ¡ÀÇ ÀÔÃâ·ÂÀ» ½±°Ô »ç¿ëÇÒ¼ö ÀÖ°Ô µÇ¾ú½À´Ï´Ù.

"½ºÆ®¸²Àº ÀÔÃâ·Â ¹æ½ÄÀÇ Ç¥ÁØÀûÀÌ°í, ÀÏ¿øÈ­µÈ °ü¸® ÇüŸ¦ ¸»ÇÏ´Â °ÍÀÔ´Ï´Ù."



ÀÚ¹ÙÀÇ ½ºÆ®¸²±¸Á¶´Â ±âº»ÀûÀ¸·Î "¹ÙÀÌÆ® ½ºÆ®¸²" °ú "¹®ÀÚ ½ºÆ®¸²" À¸·Î ³ª´©¾îÁö¸ç ÈçÈ÷, ¹ÙÀ̳ʸ®¶ó°í ºÒ¸®´Â ÀÏ¹Ý µ¥ÀÌÅ͵éÀº ¹ÙÀÌÆ® ½ºÆ®¸²À¸·Î

ó¸®ÇÏ°í ¹®ÀÚ ¶Ç´Â ¹®ÀÚ¿­À» ±â¹ÝÀ¸·Î ÇÏ´Â µ¥ÀÌÅ͵éÀº ¹®ÀÚ ½ºÆ®¸²À¸·Î ó¸®ÇÕ´Ï´Ù.

½ºÆ®¸²¿¡ ´ëÇÑ ³»¿ëÀÌ Á» ¸¹¾Æ¼­ ÀÌ °­Á¿¡¼­´Â ¹ÙÀÌÆ® ½ºÆ®¸²¿¡ ´ëÇؼ­¸¸ ¸ÕÀú ¼³¸íÇÒ°ÍÀÌ°í ¹ÙÀÌÆ® ½ºÆ®¸² Ŭ·¡½ºµé Áß¿¡¼­ ²À ¾Ë¾Æ¾ßÇÒ Å¬·¡½ºµé¿¡

´ëÇؼ­¸¸ ¾ð±ÞÇÒ °ÍÀÔ´Ï´Ù.

1. ¹ÙÀÌÆ® ½ºÆ®¸²ÀÇ ±âº» Çü½Ä
¹ÙÀÌÆ® ½ºÆ®¸²ÀÇ ÃÖ»óÀ§ Ŭ·¡½º´Â InputStream °ú OutputStream ÀÔ´Ï´Ù. ÀÌ µÎ Ŭ·¡½º´Â »ó¼ÓÀ» ÅëÇÏ¿© ¿ëµµ¿Í ¸ñÀû¿¡ µû¶ó ¿©·¯°¡Áö ÇÏÀ§ Ŭ·¡½º¸¦ ¸¸µé ¼ö ÀÖ½À´Ï´Ù.

¾Æ·¡ÀÇ ±×¸²Àº java.io ÆÐÅ°Áö   ¾È¿¡ Á¸ÀçÇÏ´Â ¹ÙÀÌÆ® ½ºÆ®¸²ÀÇ Á¾·ù¸¦ °èÃþµµ·Î ±¸¼ºÇÑ °ÍÀÔ´Ï´Ù.




À§ ±×¸²ÀÇ ½ºÆ®¸² Ŭ·¡½ºµéÀº java.io ÆÐÅ°Áö¿¡¼­ Á¦°øÇÏ´Â ±âº»ÀûÀΠŬ·¡½ºµéÀ̹ǷΠƯº°ÇÑ ¿ëµµ·Î ½ºÆ®¸²À» »ç¿ëÇÏ´Â °æ¿ì ´Ù¸¥ ÆÐÅ°Áö¸¦ Ãß°¡ÇÏ¿© »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

ÇÁ·Î±×·¡¹ÖÀ» ÇÏ´Ùº¸¸é ÆÄÀÏÀ» ´Ù·ç°Å³ª ³×Æ®¿öÅ©¸¦ »ç¿ëÇϰųª ¿©·¯°¡Áö ÀÔÃâ·Â ÀåÄ¡¸¦ »ç¿ëÇϱ⠶§¹®¿¡ ½ºÆ®¸²À» Á¢ÇϰԵ˴ϴÙ.

±× ¶§ ¸ðµç ¹ÙÀÌÆ® ½ºÆ®¸²ÀÇ ÃÖ»óÀ§ Ŭ·¡½ºÀÎ InputStream °ú  OutputStream À» Àß ¾Ë¾ÆµÎ¸é ±× ÇÏÀ§ Ŭ·¡½ºµéÀ» »ç¿ëÇϴµ¥ ´õ¿í ½¬¿öÁö°í,

Àß ÀÌÇØÇϸ鼭 »ç¿ëÇÒ ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù.

InputStream °ú OutputStream Ŭ·¡½º¿¡ ´ëÇؼ­´Â ¾Ë¾ÆµÎ¸é ÁÁ°ÚÁö¸¸ ±× ÇÏÀ§ Ŭ·¡½º´Â Á¾·ùµµ ¸¹À» »Ó´õ·¯ ±× »ç¿ë¹ýÀÌ ÃÖ»óÀ§ Ŭ·¡½ºµé°ú Å©°Ô ´Ù¸£Áö ¾Ê±â

¶§¹®¿¡ Áö±Ý ´Ù ¾Ë¾ÆµÑ ÇÊ¿ä´Â ¾øÀ¸¸ç  ÇÊ¿ä½Ã ±×¶§±×¶§ ÀÍÇô¼­ »ç¿ëÇÏ´Â °ÍÀÌ ÁÁ½À´Ï´Ù. ´ÙÀ½Àº InputStream °ú OutputStream Ŭ·¡½º¿¡ ´ëÇÏ¿© ¾Ë¾Æº¸µµ·Ï ÇÏ°Ú½À´Ï´Ù.

2. InputStream - ¸Þ¼Òµå

InputStream ¹ÙÀÌÆ® ÀÔ·Â ½ºÆ®¸²ÀÇ ÃÖ»óÀ§ Ŭ·¡½º·Î Ãß»ó ¸Þ¼Òµå¸¦ °¡Áö°í ÀÖ´Â Ãß»ó Ŭ·¡½ºÀÌ±â  ¶§¹®¿¡ ¹Ýµå½Ã ÇÏÀ§ Ŭ·¡½º¸¦ Á¤ÀÇÇÏ¿© »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

ÀÌ Å¬·¡½º°¡ °®´Â ¸Þ¼Òµå´Â ´ÙÀ½°ú °°½À´Ï´Ù.

int available() throws IOException;

ÀÔ·Â ½ºÆ®¸²À¸·Î ÀÐÀ» ¼ö ÀÖ´Â µ¥ÀÌÅÍÀÇ ¹ÙÀÌÆ®ÀÇ ¼ö¸¦ ¹ÝȯÇÕ´Ï´Ù. InputStream Ŭ·¡½ºÀÇ available ¸Þ¼Òµå´Â ÇÏÀ§ Ŭ·¡½º¿¡¼­

¹Ýµå½Ã ÀçÁ¤ÀǸ¦ ÇØÁÖ¾î¾ßÇϸç ÀçÁ¤ÀǸ¦ ÇÏÁö¾Ê°í, »ç¿ëÇÒ °æ¿ì ¹Ýȯ °ªÀº 0ÀÌ µË´Ï´Ù.


void close() throws IOException;

ÀÔ·Â ½ºÆ®¸²À» ´Ý°í ÀÌ ½ºÆ®¸²¿¡ °ü·ÃµÈ ½Ã½ºÅÛ ¸®¼Ò½º¸¦ ¹ÝȯÇÕ´Ï´Ù. ±×·¯³ª ÇÏÀ§ Ŭ·¡½º°¡ ¾Æ´Ñ InputStream Ŭ·¡½ºÀÇ close ¸Þ¼Òµå´Â

¾Æ¹« Àϵµ ¼öÇàÇÏÁö ¾Ê½À´Ï´Ù.

void mark(int readlimit);

ÀÔ·Â ½Ã½ºÅÛ¿¡¼­ ÇöÀç À§Ä¡ÇÏ´Â °÷À» ÀúÀåÇØ µÓ´Ï´Ù. ÀÔ·Â ½ºÆ®¸²Àº µ¥ÀÌÅÍ ¹ÙÀÌÆ®¸¦ Çѹø ÀÐÀ¸¸é ¹Ù·Î ´ÙÀ½ ¹ÙÀÌÆ®¸¦ ÀÐ°Ô µÇ±â ¶§¹®¿¡ ÀÌÀü µ¥ÀÌÅ͸¦

´Ù½Ã ÀÐÀ» ¼ö°¡ ¾ø½À´Ï´Ù.

±×·¯³ª mark ¸Þ¼Òµå¸¦ »ç¿ëÇÏ¸é ¸Þ¼Òµå¸¦ È£ÃâÇÑ ½ÃÁ¡ºÎÅÍ ÀÐÇôÁö´Â µ¥ÀÌÅÍ°¡ º°µµ·Î ÀúÀåµÇ±â ¶§¹®¿¡ µ¥ÀÌÅ͸¦ Àдٰ¡ ´Ù½Ã ÀúÀåµÈ À§Ä¡ÀÇ µ¥ÀÌÅ͸¦ ÀÐ°í ½ÍÀ»

¶§ reset ¸Þ¼Òµå¸¦ È£ÃâÇÏ¿© ÇØ´ç À§Ä¡ÀÇ µ¥ÀÌÅ͸¦ ´Ù½Ã ÀÐÀ» ¼ö ÀÖµµ·Ï ÇØÁÝ´Ï´Ù.


readlimit ¸Å°³ ÀÎÀÚ´Â ÇöÀç À§Ä¡ºÎÅÍ µ¥ÀÌÅ͸¦ ÀúÀåÇØµÑ ÃÖ´ë Å©±â¸¦ ¸»Çϸç ÇöÀç ³²Àº µ¥ÀÌÅÍÀÇ Å©±âº¸´Ù Å« ¼ö°¡ ÁöÁ¤µÇ¾î¾ß ÇÕ´Ï´Ù.

¸¸¾à reset À» È£ÃâÇϱâ Àü¿¡ ÀÔ·Â ½ºÆ®¸²ÀÌ ÀÐÀº µ¥ÀÌÅÍÀÇ Å©±â°¡ readlimit º¸´Ù Ä¿Áö¸é ´õ ÀÌ»ó ÀÐÀº µ¥ÀÌÅ͸¦ ÀúÀåÇصÎÁö ¾Ê½À´Ï´Ù.

markSupported ¸Þ¼Òµå¸¦ È£ÃâÇÏ¿© ÇöÀç ½ºÆ®¸² Ŭ·¡½º°¡ mark ±â´ÉÀ» Áö¿øÇÏ´ÂÁö ¿©ºÎ¸¦¾Ë ¼ö ÀÖÀ¸¸ç InputStream Ŭ·¡½ºÀÇ °æ¿ì mark ¸Þ¼Òµå´Â

¾Æ¹« Àϵµ ¼öÇàÇÏÁö ¾Ê½À´Ï´Ù.

void reset() throws IOException;

°¡Àå ÃÖ±Ù¿¡ mark ¸Þ¼Òµå°¡ È£ÃâµÇ¾ú´ø À§Ä¡·Î ½ºÆ®¸²ÀÇ À§Ä¡¸¦ Àç¼³Á¤ÇÕ´Ï´Ù. markSupported ¸Þ¼Òµå°¡ true ¸¦ ¹ÝȯÇÏ´Â °æ¿ì¿¡ reset ¸Þ¼Òµå¸¦

È£ÃâÇϸé Á¤»óÀûÀÎ °æ¿ì º°µµ·Î ÀúÀåÇصРmark ¸Þ¼Òµå¸¦ È£ÃâÇÑ ½ÃÁ¡ºÎÅÍÀÇ µ¥ÀÌÅ͸¦ ÀÐÀ» ¼ö ÀÖ½À´Ï´Ù. ±×·¯³ª Çѹøµµ mark ¸Þ¼Òµå°¡

È£ÃâµÇÁö ¾Ê¾Ò°Å³ª, mark ¸Þ¼Òµå¸¦ È£ÃâÇÒ ¶§ ÁöÁ¤ÇÑ ÀúÀåÇØµÑ ¹ÙÀÌÆ® Å©±âº¸´Ù Áö±Ý±îÁö ÀÐÀº ¹ÙÀÌÆ® Å©±â°¡ Ä¿Áö¸é IOException ÀÌ ¹ß»ýÇÕ´Ï´Ù.

¹Ý´ë·Î markSupported ¸Þ¼Òµå°¡ false ¸¦ ¹ÝȯÇÏ´Â °æ¿ì¿¡ reset ¸Þ¼Òµå¸¦ È£ÃâÇϸé IOException ÀÌ ¹ß»ýÇÒ °ÍÀÔ´Ï´Ù.

InputStream Ŭ·¡½ºÀÇ °æ¿ì reset ¸Þ¼Òµå¸¦ È£ÃâÇϸé IOException ÀÌ ¹ß»ýÇÕ´Ï´Ù.

boolean markSupported();

ÀÔ·Â ½ºÆ®¸²ÀÌ mark ¿Í reset ¸Þ¼Òµå¸¦ Áö¿øÇÏ´ÂÁö Å×½ºÆ®ÇÕ´Ï´Ù. µÎ ¸Þ¼ÒµåÀÇ Áö¿ø ¿©ºÎ´Â °¢ ½ºÆ®¸² °´Ã¼¸¶´Ù ´Þ¶óÁö¸ç InputStream Ŭ·¡½º °´Ã¼ÀÇ °æ¿ì

ÀÌ ¸Þ¼Òµå¸¦ È£ÃâÇÏ¸é  false ¸¦ ¹ÝȯÇÕ´Ï´Ù.

abstract int read() throws IOException;

ÀÔ·Â ½ºÆ®¸²À¸·ÎºÎÅÍ ÇϳªÀÇ µ¥ÀÌÅÍ ¹ÙÀÌÆ®¸¦ ÀнÀ´Ï´Ù. ¹ÙÀÌÆ® µ¥ÀÌÅÍÀÇ °ªÀº 0 ~ 255 ¹üÀ§¸¦ °®À¸¸ç ÇÔ¼öÀÇ ¹Ýȯ°ªÀ¸·Î ¸®Åϵ˴ϴÙ.

¸¸¾à ÀÐÀ» µ¥ÀÌÅÍ°¡ ¾ø´Â °æ¿ì -1 À» ¹ÝȯÇÏ°í, ´õ ÀÌ»ó ÀÐÀ» µ¥ÀÌÅÍ°¡ ¾ø´Â °æ¿ì, ÀÐÀ» ¼ö ÀÖ´Â µ¥ÀÌÅÍ°¡ »ý±â°Å³ª ½ºÆ®¸²ÀÇ ³¡À» ¹ß°ßÇϰųª

¿¹¿Ü°¡ ¹ß»ýÇÒ ¶§±îÁö ´ë±â»óÅ°¡ µË´Ï´Ù.

ÀÌ ¸Þ¼Òµå´Â ¹Ýµå½Ã ÇÏÀ§ Ŭ·¡½º¿¡¼­ ±¸ÇöÇÏ¿© »ç¿ëÇØ¾ß ÇÕ´Ï´Ù.

int read(byte[] b) throws IOException;

ÀÔ·Â ½ºÆ®¸²À¸·ÎºÎÅÍ µ¥ÀÌÅ͸¦ Àо ¸Å°³ ÀÎÀÚ·Î ³Ñ¾î¿Â b ¹è¿­¿¡ ÀúÀåÇÕ´Ï´Ù. ´õ ÀÌ»ó ÀÐÀ» µ¥ÀÌÅÍ°¡ ¾ø´Â °æ¿ì, ÀÐÀ» ¼ö ÀÖ´Â µ¥ÀÌÅÍ°¡ »ý±â°Å³ª

½ºÆ®¸²ÀÇ ³¡À» ¹ß°ßÇϰųª ¿¹¿Ü°¡ ¹ß»ýÇÒ ¶§±îÁö ´ë±â»óÅ°¡ µË´Ï´Ù.

¸¸¾à b°¡ null À̸é NullPointerException ¿¹¿Ü°¡ ¹ß»ýÇÏ¸ç ´õ ÀÌ»ó ÀÐÀ» µ¥ÀÌÅÍ°¡ ¾ø´Â °æ¿ì -1ÀÌ ¹ÝȯµÇ°í, ¸¸¾à ù¹ø° ¹ÙÀÌÆ®°¡ ½ºÆ®¸²ÀÇ ³¡À̰ųª

½ºÆ®¸²ÀÌ close µÇ°Å³ª ±âŸ ¿©·¯°¡Áö ÀÌÀ¯·Î ÀÐÀ» ¼ö ¾øÀ¸¸é IOException ¿¹¿Ü°¡ ¹ß»ýÇÕ´Ï´Ù.

ÀÌ ¸Þ¼Òµå·Î ÀÐÀ» µ¥ÀÌÅÍ´Â byte ¹è¿­ÀÇ ±æÀÌÀ̸ç ÀÐÀº µ¥ÀÌÅÍÀÇ ±æÀÌ´Â ¸Þ¼ÒµåÀÇ ¹Ýȯ°ªÀÌ µÇ¸ç ÀÌ ¸Þ¼Òµå´Â read(b, 0, b.length) ¿Í µ¿ÀÏÇÑ °á°ú¸¦ °¡Á®¿É´Ï´Ù.

int read(byte[] b, int off, int len) throws IOException;

ÁöÁ¤ÇÑ °³¼ö¸¸Å­ µ¥ÀÌÅÍ ¹ÙÀÌÆ®¸¦ Àаí byte ¹è¿­ÀÇ ÁöÁ¤ÇÑ À§Ä¡¿¡¼­ºÎÅÍ µ¥ÀÌÅ͸¦ ÀúÀåÇÕ´Ï´Ù.

ÀÌ ¸Þ¼ÒµåÀÇ ¹Ýȯ °ªÀ̳ª ¿¹¿Ü »óȲÀº read(byte[] b) ¸Þ¼Òµå¿Í µ¿ÀÏÇÏÁö¸¸ ³»ºÎÀûÀ¸·Î´Â read() ¸Þ¼Òµå¸¦ ¹Ýº¹ÀûÀ¸·Î È£ÃâÇÏ¿© µ¥ÀÌÅ͸¦ ÀнÀ´Ï´Ù.

long skip(long n) throws IOException;

ÀÔ·Â ½ºÆ®¸²¿¡¼­ ¸Å°³ ÀÎÀÚ¸¸Å­ÀÇ µ¥ÀÌÅ͸¦ °Ç³Ê ¶Ý´Ï´Ù. ¸Å°³ ÀÎÀÚ¿¡ 0 À̳ª À½¼ö°¡ ³Ñ¾î¿Ã °æ¿ì ÀÌ ¸Þ¼Òµå´Â ¼öÇàµÇÁö ¾ÊÀ¸¸ç

ÀÌ ¸Þ¼Òµå°¡ ¼öÇàµÇ¸é byte ¹è¿­ÀÌ »ý¼ºµÇ¸é¼­ ÇØ´ç ¹è¿­¿¡ µ¥ÀÌÅ͸¦ ÀоîµéÀÌ°Ô µË´Ï´Ù.

3. OutputStream - ¸Þ¼Òµå

OutputStream ¹ÙÀÌÆ® Ãâ·Â ½ºÆ®¸²ÀÇ ÃÖ»óÀ§ Ŭ·¡½º·Î Ãß»ó ¸Þ¼Òµå¸¦ °¡Áö°í ÀÖ´Â Ãß»ó Ŭ·¡½ºÀ̱⠶§¹®¿¡ ¹Ýµå½Ã ÇÏÀ§ Ŭ·¡½º¸¦ Á¤ÀÇÇÏ¿© »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

ÀÌ Å¬·¡½º°¡ °®´Â ¸Þ¼Òµå´Â ´ÙÀ½°ú °°½À´Ï´Ù.

public void close() throws IOException;

Ãâ·Â ½ºÆ®¸²À» ´Ý°í ÀÌ ½ºÆ®¸²¿¡ °ü·ÃµÈ ½Ã½ºÅÛ ¸®¼Ò½º¸¦ ¹ÝȯÇÕ´Ï´Ù.

Çѹø ´ÝÇôÁø ½ºÆ®¸²Àº ´Ù½Ã ¿­°Å³ª ½ÇÇà½Ãų ¼ö ¾øÀ¸¹Ç·Î ´Ù½Ã ½ºÆ®¸²À» »ý¼ºÇÏ¿© »ç¿ëÇؾßÇÕ´Ï´Ù.

OutputStream Ŭ·¡½º¿¡¼­´Â ¾Æ¹« Àϵµ ¼öÇàÇÏÁö ¾Ê½À´Ï´Ù.

public void flush() throws IOException;

½ºÆ®¸² ¹öÆÛ¿¡ ÀúÀåµÇ¾î ÀÖ´Â µ¥ÀÌÅ͸¦ °­Á¦ÀûÀ¸·Î Ãâ·Â½Ãŵ´Ï´Ù. ±âº»ÀûÀÎ Ãâ·Â ½ºÆ®¸²Àº ¹öÆÛ¿¡ µ¥ÀÌÅÍ°¡ °¡µæ Â÷¸é ±×¶§ µ¥ÀÌÅ͸¦ Ãâ·Â½ÃÅ°´Âµ¥

ÀÌ ¸Þ¼Òµå¸¦ »ç¿ëÇϸé ÀúÀåµÈ µ¥ÀÌÅÍÀÇ Å©±â¿¡¿¡ °ü°è¾øÀÌ ¹Ù·Î Ãâ·ÂµË´Ï´Ù.

OutputStream Ŭ·¡½º¿¡¼­´Â ¾Æ¹«Àϵµ ¼öÇàÇÏÁö ¾Ê½À´Ï´Ù.

abstract void write(int b) throws IOException;

Ãâ·Â ½ºÆ®¸²À¸·Î µ¥ÀÌÅ͸¦ ½á¼­ ¸Å°³ ÀÎÀÚ·Î ³Ñ¾î¿Â µ¥ÀÌÅ͸¦ Ãâ·ÂÇÕ´Ï´Ù. ÀÌ ¸Þ¼Òµå·Î Ãâ·ÂµÇ´Â µ¥ÀÌÅÍ´Â 1¹ÙÀÌÆ®À̱⠶§¹®¿¡ ÇÏÀ§ 8ºñÆ®¸¸ À¯È¿ÇÏ°Ô

ÀÛ¿ëÇÏ¸ç »óÀ§ 24ºñÆ®´Â ¹«½ÃµË´Ï´Ù.

ÀÌ ¸Þ¼Òµå´Â Ãß»ó ¸Þ¼ÒµåÀ̱⠶§¹®¿¡ OutputStream ÀÇ ÇÏÀ§ Ŭ·¡½º´Â ¹Ýµå½Ã ÀÌ ¸Þ¼Òµå¸¦ Á¤ÀÇÇØ ÁÖ¾î¾ß ÇÕ´Ï´Ù.

public void write(byte[] b) throws IOException;

Ãâ·Â ½ºÆ®¸²À¸·Î ÁöÁ¤µÈ byte ¹è¿­¿¡ ÀúÀåµÈ µ¥ÀÌÅ͸¦ ¹è¿­ÀÇ ±æÀ̸¸Å­ Ãâ·Â½Ãŵ´Ï´Ù. À̸޼ҵå´Â write(b, 0, b.length()) ¿Í µ¿ÀÏÇÑ È¿°ú¸¦ °¡Áý´Ï´Ù.

public void write(byte[] b, int off, int len) throws IOException;

Ãâ·Â ½ºÆ®¸²À¸·Î byte ¹è¿­ÀÇ ÁöÁ¤ÇÑ À§Ä¡¿¡¼­ºÎÅÍ ÁöÁ¤ÇÑ °³¼ö¸¸Å­ µ¥ÀÌÅ͸¦ Ãâ·Â½Ãŵ´Ï´Ù.

OutputStream Ŭ·¡½ºÀÇ °æ¿ì ÀÌ ¸Þ¼Òµå°¡ ½ÇÇàµÇ¸é ¹è¿­ÀÇ °¢ ¹ÙÀÌÆ®¸¶´Ù Ãâ·ÂÀÌ ¹ß»ýÇϱ⠶§¹®¿¡ ÇÏÀ§ Ŭ·¡½º¸¦ »ý¼ºÇÏ´Â °æ¿ì È¿À²ÀûÀ¸·Î À籸ÇöÇØ¾ß ÇÕ´Ï´Ù.

¸¸¾à byte ¹è¿­ÀÌ null ÀÎ °æ¿ì NullPointerException ÀÌ ¹ß»ýÇÏ°í, off ³ª len ÀÌ À½¼öÀ̰ųª off ¿Í lenÀÇ ÇÕÀÌ len º¸´Ù Å« °æ¿ì

IndexOutOfBoundsException ÀÌ ¹ß»ýÇÕ´Ï´Ù.

ÀÌ·¯ÇÑ ±âº» ÀÔÃâ·Â ½ºÆ®¸²Àº ¿©·¯°¡Áö ¸ñÀû°ú Ư¼º¿¡ µû¶ó »ó¼ÓÀ» ÅëÇÏ¿© ¿©·¯°¡Áö ÇüÅ·ΠȮÀåµÉ ¼ö ÀÖÀ¸¸ç ±âº» ¸Þ¼Òµå¸¦ ÀçÁ¤ÀÇÇϰųª,

»õ·Î¿î ¸Þ¼Òµå¸¦ Ãß°¡Çϸ鼭 ±â´ÉÀ» ±¸ÇöÇÒ ¼ö ÀÖ½À´Ï´Ù.



4. ¹ÙÀÌÆ® ½ºÆ®¸²ÀÇ Á¾·ù

À§ÀÇ Å¬·¡½º °èÃþµµ¿¡ ÀÖ´Â InputStream °ú OutputStream Ŭ·¡½ºÀÇ ÇÏÀ§ Ŭ·¡½º´Â ´ÙÀ½°ú °°Àº Ư¡À» °¡Áö°í ÀÖ½À´Ï´Ù.

2.1 InputStream Ŭ·¡½ºÀÇ ÇÏÀ§ Ŭ·¡½º Á¾·ù

- ByteArrayInputStream

½ºÆ®¸²À¸·ÎºÎÅÍ ÀÐÀº µ¥ÀÌÅ͸¦ ÀúÀåÇÒ ¼ö ÀÖ´Â ¹öÆÛ¸¦ °¡Áø ½ºÆ®¸²ÀÔ´Ï´Ù. Ŭ·¡½ºÀÇ ³»ºÎ¿¡´Â Ä«¿îÅÍ°¡ º°µµ·Î Á¸ÀçÇϴµ¥ ÀÌ°ÍÀº ´ÙÀ½ ¹ÙÀÌÆ®¸¦ Àо

ÀúÀåÇÒ À§Ä¡¸¦ °¡¸®Å°°í ÀÖ½À´Ï´Ù.

- FileInputStream

ÆÄÀÏ ½Ã½ºÅÛ³»ÀÇ ÆÄÀÏ¿¡¼­ µ¥ÀÌÅ͸¦ ÀԷ¹ÞÀ» ¼ö ÀÖ´Â ±â´ÉÀ» Á¦°øÇÕ´Ï´Ù. À̹ÌÁö°°Àº ¹ÙÀ̳ʸ® ±â¹ÝÀÇ ÆÄÀÏÀº ¹Ù·Î »ç¿ëÇÒ ¼ö ÀÖÁö¸¸ ¹®ÀÚ ±â¹ÝÀÇ

ÆÄÀÏÀ» ÀÐÀ» ¶§¿¡´Â FileReader Ŭ·¡½º¸¦ »ç¿ëÇÒ °ÍÀ» ±ÇÀåÇÕ´Ï´Ù.

- FilterInputStream

¾î¶² InputStream °´Ã¼¿Í »ç¿ëÀÚ »çÀÌ¿¡ Á¸ÀçÇϴ Ŭ·¡½º·Î½á ÀÔ·Â ½ºÆ®¸²¿¡¼­ Àд µ¥ÀÌÅ͸¦ º¯È¯Çϰųª º°µµÀÇ ±â´ÉÀ» Ãß°¡·Î Á¦°øÇÕ´Ï´Ù.

Áï, FilterInputStream Ŭ·¡½º´Â ½ÇÁúÀûÀ¸·Î µ¥ÀÌÅ͸¦ ÀԷ¹ްí ÀúÀåÇÏ´Â º°µµÀÇ InputStream °´Ã¼¸¦ Æ÷ÇÔÇÏ¿© ÀÚ½ÅÀÇ ¸Þ¼Òµå°¡ È£ÃâµÇ¸é

InputStream °´Ã¼¿¡ ¾÷¹« ¼öÇàÀ» Àü´ÞÇϵµ·Ï ¸Þ¼Òµå°¡ ÀçÁ¤ÀǵǾî ÀÖ½À´Ï´Ù.


¾Æ·¡ÀÇ Å¬·¡½ºµéÀº ÀÌ Å¬·¡½º´Â »ó¼Ó¹Þ¾Æ ±â´ÉÀ» È®ÀåÇÑ Å¬·¡½ºµéÀÔ´Ï´Ù.


(1) BufferedInputStream

¾î¶² InputStream °´Ã¼ÀÇ ÇÊÅÍ Å¬·¡½º·Î½á ¹öÆÛ¸¦ ÀÌ¿ëÇÑ ÀÔ·Â ±â´É°ú mark(), reset() ¸Þ¼Òµå¸¦ Á¦°øÇϵµ·Ï ±â´ÉÀÌ È®ÀåµÈ Ŭ·¡½ºÀÔ´Ï´Ù.

ÀÌ Å¬·¡½º°¡ »ý¼ºµÇ¸é ¹è¿­ÀÌ ÇÔ²² »ý¼ºµÇ¸ç InpputStream °´Ã¼·Î ¿©·¯ ¹ÙÀÌÆ®ÀÇ µ¥ÀÌÅ͸¦ ¹öÆÛ¿¡ Àоî¿À°í,

ÀÌ ¹öÆÛ¿¡ ÀúÀåµÈ µ¥ÀÌÅ͸¦ read() Çϰųª skip()ÇÏ¿© ´Ù·ê ¼ö ÀÖ½À´Ï´Ù.

(2) DataInputStream

¾î¶² InputStream °´Ã¼ÀÇ ÇÊÅÍ Å¬·¡½º·Î½á ´Ù¸¥ InputStream °´Ã¼°¡ ÀÐÀº ¹ÙÀÌÆ® µ¥ÀÌÅ͸¦ ÀÚ¹ÙÀÇ ±âº» µ¥ÀÌÅÍ Å¸ÀÔ Çü½ÄÀ¸·Î ÀÐÀ» ¼ö ÀÖ´Â ±â´ÉÀ» Á¦°øÇÕ´Ï´Ù.

(3) LineNumberInputStream

¾î¶² InputStream °´Ã¼ÀÇ ÇÊÅÍ Å¬·¡½º·Î½á ÀоîµéÀÎ µ¥ÀÌÅÍ¿¡ Çà ¹øÈ£¸¦ ºÎ¿©ÇØ º¸°üÇÏ°í°ü¸®ÇÕ´Ï´Ù.

ÀÌ Å¬·¡½º´Â Àоî¿À´Â µ¥ÀÌÅÍ¿¡ \r À̳ª \n À̳ª \r\n °¡ Á¸ÀçÇÏ´Â °æ¿ì Çà ¹øÈ£¸¦ Áõ°¡½Ãŵ´Ï´Ù.

(4) PushbackInputStream

¾î¶² InputStream °´Ã¼ÀÇ ÇÊÅÍ Å¬·¡½º·Î½á µ¥ÀÌÅ͸¦ Àдٰ¡ unread() ¸Þ¼Òµå¸¦ ÀÌ¿ëÇÏ¿© ´Ù½Ã µ¥ÀÌÅÍ ¹ÙÀÌÆ®¸¦ ÀÔ·Â ½ºÆ®¸²¿¡ µÇµ¹·Á³õ´Â ±â´ÉÀ» ÇÕ´Ï´Ù.

¿¹¸¦ µé¾î, abcde ¶ó´Â µ¥ÀÌÅÍ°¡ ÀÔ·Â ½ºÆ®¸²¿¡¼­ ÀÐÈ÷±â¸¦ ´ë±âÇÏ°í ÀÖÀ» ¶§ abcd ¸¦ ÀÐÀº ÈÄ a ¸¦ unread()

¸Þ¼Òµå·Î ÀÔ·Â ½ºÆ®¸²¿¡ µ¹·Á ³õÀ¸¸é ´ÙÀ½¿¡ Àд 2¹ÙÀÌÆ®´Â ae °¡ µË´Ï´Ù.

- ObjectInputStream

µ¥ÀÌÅÍÀÇ Á÷·ÄÈ­¸¦ ½ÇÇöÇϵµ·Ï µ¥ÀÌÅ͸¦ ÇϳªÀÇ °´Ã¼ ÇüÅ·ΠÀÐÀ» ¼ö ÀÖµµ·Ï ÇØÁÝ´Ï´Ù.


- PipedInputStream

¸ÖƼ ¾²·¹µå ȯ°æ¿¡¼­ ÇϳªÀÇ ¾²·¹µå¿¡¼­ º¸³½ µ¥ÀÌÅ͸¦ ´Ù¸¥ ¾²·¹µå°¡ ¹ÞÀ»¶§ »ç¿ëÇÕ´Ï´Ù.

PipedOutputStream °´Ã¼¿¡ ¿¬°áÇÏ¿© ÇØ´ç °´Ã¼°¡ Ãâ·ÂÇÏ´Â µ¥ÀÌÅ͸¦ ÀÌ ÀÔ·Â ½ºÆ®¸²ÀÌ ÀÐÀ» ¼ö ÀÖ½À´Ï´Ù.

- SequenceInputStream

¼­·Î ´Ù¸¥ ÀԷ½ºÆ®¸²À» ³í¸®ÀûÀ¸·Î À̾îÁÖ´Â ±â´ÉÀ» Á¦°øÇÕ´Ï´Ù. ÀÔ·Â ½ºÆ®¸²À» ¼ø¼­´ë·Î ¿¬°áÇÏ¿© ÇϳªÀÇ ÀÔ·Â ½ºÆ®¸²ÀΰÍó·³ »ç¿ëÇÒ ¼ö ÀÖ°ÔÇØÁÝ´Ï´Ù.

¿¹¸¦ µé¾î a, b, c ¶ó´Â ÀÔ·Â ½ºÆ®¸²À» sequence ¶ó´Â SequenceInputStream °´Ã¼¿¡¼­ ¿¬°áÇÏ¿© »ç¿ëÇÏ´Â °æ¿ì a ¿¡ 123, b ¿¡ tips ±×¸®°í c ¿¡

soft ¶ó´Â µ¥ÀÌÅÍ°¡ Á¸ÀçÇÒ ¶§ sequence ·Î µ¥ÀÌÅ͸¦ ÀÐÀ¸¸é 123tipssoft ¶ó°í ÀÐÇôÁý´Ï´Ù.

- StringBufferInputStream

¹®ÀÚ¿­À» ¹ÙÀÌÆ® ÀÔ·Â ½ºÆ®¸²À¸·Î »ç¿ëÇÒ ¼ö ÀÖµµ·Ï ÇØÁÝ´Ï´Ù. ±×·¯³ª ÀÌ Å¬·¡½º´Â ¹®ÀÚ¿­À» ¹ÙÀÌÆ® ¹è¿­·Î Á¤È®ÇÏ°Ô º¯È¯ÇÏÁö ¸øÇϱ⶧¹®¿¡

StringReader Ŭ·¡½º¸¦ »ç¿ëÇÒ °ÍÀ» ±ÇÀåÇÕ´Ï´Ù.


2.2 OutputStream Ŭ·¡½ºÀÇ ÇÏÀ§ Ŭ·¡½º Á¾·ù

- ByteArrayOutputStream

Ãâ·ÂÇÒ µ¥ÀÌÅ͸¦ Ãâ·Â ½ºÆ®¸²ÀÇ ¹ÙÀÌÆ® ¹è¿­¿¡ ÀúÀåÇÕ´Ï´Ù. ½ºÆ®¸²ÀÇ ¹è¿­Àº µ¥ÀÌÅÍ°¡ ÀúÀåµÊ¿¡ µû¶ó ÀÚµ¿ÀûÀ¸·Î Å©±â°¡ Á¶ÀýµÇ¸ç

toByteArray() ³ª toString() ¸Þ¼Òµå¸¦ ÀÌ¿ëÇÏ¿© ¹è¿­ ³»ÀÇ µ¥ÀÌÅ͸¦ ¹Ýȯ¹ÞÀ» ¼öµµ ÀÖ½À´Ï´Ù.

- FileOutputStream

ÆÄÀÏ¿¡ µ¥ÀÌÅ͸¦ ¾µ ¼ö ÀÖ´Â ±â´ÉÀ» Á¦°øÇÕ´Ï´Ù.  FileInputStream °ú ¸¶Âù°¡Áö·Î ¹®ÀÚ ±â¹ÝÀÇ ÆÄÀÏÀ» ¾µ¶§¿¡´Â FileWriter Ŭ·¡½º¸¦ »ç¿ëÇÒ °ÍÀ» ±ÇÀåÇÕ´Ï´Ù.

- FilterOutputStream

¾î¶² OutputStream °´Ã¼¿Í »ç¿ëÀÚ »çÀÌ¿¡ Á¸ÀçÇϴ Ŭ·¡½º·Î½á Ãâ·Â ½ºÆ®¸²¿¡¼­ Ãâ·ÂÇÒ µ¥ÀÌÅ͸¦ º¯È¯Çϰųª º°µµÀÇ ±â´ÉÀ» Ãß°¡·Î Á¦°øÇÕ´Ï´Ù.

Áï, FilterOutputStream Ŭ·¡½º´Â µ¥ÀÌÅ͸¦ Ãâ·ÂÇÏ´Â º°µµÀÇ OutputStream °´Ã¼¸¦ Æ÷ÇÔÇÏ¿© ÀÚ½ÅÀÇ ¸Þ¼Òµå°¡ È£ÃâµÇ¸é OutputStream

°´Ã¼¿¡ ¾÷¹« ¼öÇàÀ» Àü´ÞÇϵµ·Ï ¸Þ¼Òµå°¡ ÀçÁ¤ÀǵǾî ÀÖ½À´Ï´Ù.

¾Æ·¡ÀÇ Å¬·¡½ºµéÀº ÀÌ Å¬·¡½º´Â »ó¼Ó¹Þ¾Æ ±â´ÉÀ» È®ÀåÇÑ Å¬·¡½ºµéÀÔ´Ï´Ù.


(1) BufferedOutputStream

¾î¶² OutputStream °´Ã¼ÀÇ ÇÊÅÍ Å¬·¡½º·Î½á µ¥ÀÌÅÍ Ãâ·Â½Ã »ç¿ë°¡´ÉÇÑ ¹öÆÛ¸µ ±â´ÉÀ» Ãß°¡ÇÑ °ÍÀÔ´Ï´Ù.

ÀÌ °´Ã¼¸¦ ÀÌ¿ëÇÏ¿© µ¥ÀÌÅ͸¦ ¾²¸é ¹öÆÛ¿¡ µ¥ÀÌÅÍ°¡ ÀúÀåµÇ´Ù°¡ ¹öÆÛ°¡ Â÷¸é ±×¶§ OutputStream °´Ã¼·Î µ¥ÀÌÅ͸¦ Ãâ·ÂÇÏ°Ô µË´Ï´Ù.

¹öÆÛ°¡ °¡µæ Â÷Áö ¾ÊÀº ½ÃÁ¡¿¡¼­ µ¥ÀÌÅ͸¦ Ãâ·ÂÇÏ°íÀÚ ÇÒ¶§¿¡´Â flush() ¸Þ¼Òµå¸¦ »ç¿ëÇÏ¸é µË´Ï´Ù.

(2) DataOutputStream

¾î¶² OutputStream °´Ã¼ÀÇ ÇÊÅÍ Å¬·¡½º·Î½á ÀÚ¹Ù ±âº» µ¥ÀÌÅÍ Å¸ÀÔÀ¸·Î µ¥ÀÌÅÍ°¡ ³Ñ¾î¿À¸é ÀÌ Å¬·¡½º°¡ ¹ÙÀÌÆ® ÇüÅ·Πº¯È¯ÇÏ¿©

³»ºÎÀÇ OutputStream °´Ã¼¿¡°Ô Àü´ÞÇÕ´Ï´Ù.

(3) PrintStream

¾î¶² OutputStream °´Ã¼ÀÇ ÇÊÅÍ Å¬·¡½º·Î½á µ¥ÀÌÅ͸¦ ÀÚ¹ÙÀÇ ±âº» µ¥ÀÌÅÍ Å¸ÀÔ°ú Çü½ÄÀ¸·Î Ãâ·Â ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÈçÈ÷ Äֿܼ¡¼­ Ãâ·ÂÇÒ ¶§ »ç¿ëÇÏ´Â

System.out.println ¿¡¼­ System.out ÀÌ PrintStream °´Ã¼ÀÔ´Ï´Ù.

- ObjectOutputStream

µ¥ÀÌÅÍÀÇ Á÷·ÄÈ­¸¦ ½ÇÇöÇϵµ·Ï µ¥ÀÌÅ͸¦ ÇϳªÀÇ °´Ã¼ ÇüÅ·Π¾µ ¼ö ÀÖµµ·Ï ÇØÁÝ´Ï´Ù.

- PipedOutputStream

¸ÖƼ ¾²·¹µå ȯ°æ¿¡¼­ ÇϳªÀÇ ¾²·¹µå¿¡¼­ ´Ù¸¥ ¾²·¹µå·Î µ¥ÀÌÅ͸¦ º¸³¾¶§ »ç¿ëÇÕ´Ï´Ù.

PipedInputStream °´Ã¼¿¡ ¿¬°áÇÏ¿© ÇØ´ç °´Ã¼°¡ µ¥ÀÌÅ͸¦ ÀÐÀ» ¼ö ÀÖµµ·Ï µ¥ÀÌÅ͸¦ Ãâ·ÂÇØÁÝ´Ï´Ù.
 
¡Ø Ȥ½Ã µµ¿òÀÌ µÇ¼Ì´Ù¸é ´ñ±Û¿¡ ÇѸ¶µð ³²°ÜÁÖ¼¼¿ä!
ÀÛ¼ºÀÚ   ºñ¹Ð¹øÈ£
ÀÚµ¿±Û ¹æÁö     (ÀÚµ¿±Û ¹æÁö ±â´ÉÀÔ´Ï´Ù.)
³»¿ë   ´ñ±Û´Þ±â 
À̸ÞÀÏ ¹®ÀÇ : cak0280@nate.com  
Copyright 2000 By ENTERSOFT.KR All Rights Reserved.