PushBackInputStreamÀº µ¥ÀÌÅÍÀÇ Àб⺹±¸(unread) ±â´ÉÀ» Á¦°øÇÏ´Â ¹ÙÀÌÆ® ÀÔ·Â ÇÊÅÍ ÀÔ´Ï´Ù. Áï, ¹æ±Ý ÀÐÀº ÇÑ ¹ÙÀÌÆ®¸¦ Àбâ ÀüÀÇ ¹ÙÀÌÆ® ÀÔ·Â ½ºÆ®¸²À¸·Î µÇµ¹·Á ³õ´Â °ÍÀ» °¡´ÉÇÏ°Ô ÇÕ´Ï´Ù.
´ÙÀ½Àº PushbackInputStream°ú unread()¸Þ¼µå¸¦ »ç¿ëÇÏ¿© 1byte¸¦ Àбâ ÀüÀÇ »óÅ·ΠµÇµ¹¸®´Â ¿¹Á¦ÀÔ´Ï´Ù.
PushbackInputStreamTest.java (PushbackInputStreamÀ» Å×½ºÆ®Çϱâ À§ÇÑ ¿¹Á¦) |
import java.io.*; class PushbackInputStreamTest { public static void main(String[] args) throws IOException { String s = "Java."; System.out.println(s); byte[] buffer = s.getBytes(); ByteArrayInputStream in = new ByteArrayInputStream(buffer); PushbackInputStream f = new PushbackInputStream(in); int c; while ((c = f.read()) != -1) { switch(c) { case 'a': if ((c = f.read()) == 'v') System.out.print("o"); else { System.out.print("b"); f.unread(c); } break; default: System.out.print((char)c); break; } } } } |
C:\JavaExample\09>javac PushbackInputStreamTest.java C:\JavaExample\09>java PushbackInputStreamTest Java. Job. |
°á°ú¸¦ º¸¸é ¡°Java.¡±¶ó´Â ¹®ÀÚ¿ÀÌ ÇÁ·Î±×·¥À» ÅëÇØ ¡°Job.¡±À¸·Î ¹Ù²î¾úÀ½À» ¾Ë ¼ö ÀÖ½À´Ï´Ù. À̰ÍÀº À§ÀÇ switch~case ¹®¿¡¼ ¹®ÀÚ ¡®a¡¯¸¦ ¡®o¡¯·Î ¹Ù²Ù¾î ÁÖ°í ¹®ÀÚ ¡®a¡¯°¡ ¡®b¡¯·Î ¹Ù²î´Â ¼ø°£ unread()¿¡ ÀÇÇØ¼ ¹®ÀÚ ¡®v¡¯°¡ ½ºÆ®¸²À¸·Î µÇµ¹·Á Á³½À´Ï´Ù. µû¶ó¼ ¡®Job¡¯À̶õ ¹®ÀÚ¿ÀÌ Ãâ·ÂµÇ¾ú½À´Ï´Ù.
¼Ò½º¸¦ º¸¸é, StringÀ» ¹ÙÀÌÆ® ¹è¿·Î º¯È¯Çϱâ ÇØ getBytes()¸Þ¼µå¸¦ »ç¿ëÇÏ¿© ¹®ÀÚ¿ ¡°Java¡±¸¦ byte¹è¿ buffer¿¡ ÀúÀåÇÕ´Ï´Ù.
n String s = "Java.";
n Byte[] buffer = s.getBytes();
¹ÙÀÌÆ® ¹è¿ buffer¿¡ ´ëÇÑ ByteArrayInputStream°´Ã¼ inÀ» »ý¼ºÇÏ°í ´Ù½Ã, ByteArrayInputStream in¿¡ ´ëÇÑ PushbackInputStream°´Ã¼ f¸¦ »ý¼ºÇÕ´Ï´Ù.
n ByteArrayInputStream in = new ByteArrayInputStream(buffer);
n PushbackInputStream f = new PushbackInputStream(in);
¹ÙÀÌÆ®¹®ÀÚ¸¦ while¹®À¸·Î ·çÇÁ µ¹¸é¼ switch~case¹®À¸·Î °Ë»çÇØ ¡®a¡¯¸¦ ¸¸³ª¼ ´ÙÀ½ ±ÛÀÚ°¡ ¡®v¡¯ÀÌ¸é ¡®o¡¯¸¦ Ãâ·ÂÇϰí, ±×·¸Áö ¾ÊÀ¸¸é ¡®b¡¯¸¦ Ãâ·ÂÇÑÈÄ unread()¸Þ¼µå·Î ÇÑ ¹ÙÀÌÆ®¸¦ µÇ µ¹¸³´Ï´Ù(unread). ÀÌ °á°ú ¡°Java¡±°¡ ¡°Job¡±À¸·Î º¯ÇÏ°Ô µË´Ï´Ù.
n if ((c = f.read()) == 'v')
n System.out.print("o");
n else {
n System.out.print("b");
n f.unread(c);
n }
PushbackInputStreamŬ·¡½º´Â ¹®ÀÚ¸¦ ÀÐ°í ³ª¼ ±×°ÍÀ» Stream¿¡ ¹ÝȯÇϱâ À§Çؼ »ç¿ëµË´Ï´Ù. ¾Æ¹«·± ºí·ÎÅ· ¾øÀÌ InputStream¿¡¼ ³ª¿À´Â °ÍÀ» »ì¦ ¿³º¼ ¼ö ÀÖ´Â °ÍÀÔ´Ï´Ù. ÇÏÁö¸¸, Çϳª ÀÌ»óÀÇ ´ÜÀÏ ¹®ÀÚ¸¦ ´Ù½Ã pushÇÏ·Á´Â ½Ãµµ´Â IOExceptionÀ» ¹ß»ý½ÃÅ´À» À¯ÀÇÇÏ¿©¾ß ÇÒ °ÍÀÔ´Ï´Ù.
PushbackInputStream »ý¼ºÀÚ¸Þ¼µå |
public PushbackInputStream(InputStream in) : InputStream¿¡ in¿¡ »õ·Î¿î PushBackInputStream °´Ã¼¸¦ »ý¼ºÇÕ´Ï´Ù. public PushbackInputStream(InputStream in, int sz) : InputStream in¿¡ Á¤¼öÇü sz Å©±â ¸¸ÅÀÇ »õ·Î¿î PushbackInputStream °´Ã¼¸¦ »ý¼ºÇÕ´Ï´Ù. |
PushbackInputStream ÁÖ¿ä ¸â¹ö¸Þ¼µå |
public void unread(byte[] b) : ÁÖ¾îÁø ¹ÙÀÌÆ® ¹è¿¿¡ ÀÖ´Â ¹ÙÀÌÆ®µéÀ» ³»ºÎ ¹öÆÛÀÇ ¾Õ¿¡ º¹»çÇÔÀ¸·Î½á, ÀÐÁö ¾ÊÀº °Íó·³ ÇÕ´Ï´Ù. public void unread(byte[] b, int off, int len) : ¹ÙÀÌÆ®¹è¿ b¸¦ ³»ºÎ ¹öÆÛÀÇ ¾Õ¿¡ len±æÀ̸¸Å Ǫ½Ã¹é ¹öÆÛ¸¦ ¼³Á¤ÇÕ´Ï´Ù. public void unread(int b) : ÁÖ¾îÁø ¹ÙÀÌÆ®¸¦ ³»ºÎ ¹öÆÛÀÇ ¾Õ¿¡ º¹»çÇÔÀ¸·Î½á, ÀÐÁö ¾ÊÀº °Íó·³ ÇÕ´Ï´Ù. |
jabookÀúÀÚ¸íÇÔ |
Á¦¸ñ:¼Ò¼³°°ÀºÀÚ¹Ù2ºÎ ÀúÀÚ:ÃÖ¿µ°ü |