¼Ò¼³°°ÀºÀÚ¹Ù2ºÎ  Á¦9Àå ÀÚ¹Ù½ºÆ®¸²  9.3.11 PushBackInputStream  

 

9.3.12 PushBackInputStream

 

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        switch(c) {

n           case 'a':

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ºÎ
ÀúÀÚ:ÃÖ¿µ°ü