ÀÚ¹Ù ÀÔÃâ·Â( java stream )
- 1. ÀÚ¹Ù ÀÔÃâ·Â ±¸Á¶
°´Ã¼°¡ °¡Áö°í ÀÖ´Â µ¥ÀÌÅÍ´Â ÆÄÀÏ¿¡¼ Àоî¿Ã ¼öµµ ÀÖ°í ÆÄÀÏ¿¡ ÀúÀåÇÒ ¼öµµ ÀÖ´Ù. ¶ÇÇÑ ÆÄÀÏ »Ó¸¸ ¾Æ´Ï¶ó, ÇÁ¸°Åͳª ³×Æ®¿öÅ©¿Í °°Àº ¿ÜºÎ ÀåÄ¡¿¡ µ¥ÀÌÅ͸¦ Ãâ·ÂÇÒ ¼öµµ ÀÖ´Ù. ÀÌ·¯ÇÑ ÆÄÀÏ ÀÔÃâ·ÂÀÇ ±âº»Àº ½ºÆ®¸²( stream )ÀÌ´Ù. ½ºÆ®¸²À̶õ ¹ÙÀÌÆ® ´ÜÀ§ÀÇ µ¥ÀÌÅ͸¦ ±âº»À¸·Î ÇÑ ¼øÂ÷ÀûÀÎ ÀÔ·Â ¶Ç´Â Ãâ·ÂÀÇ ´Ü¹æÇâ È帧ÀÌ´Ù.
< ÀÚ¹Ù ÀÔÃâ·Â ±¸Á¶ >
ÀÚ¹Ù ÀÔÃâ·Â | ||||
ÆÄÀÏ | ±âº» ÀÔÃâ·Â | ÇÊÅÍ ÀÔÃâ·Â | ¹®ÀÚ ÀÔÃâ·Â | ºñ¼øÂ÷ Á¢±Ù ÆÄÀÏ |
°´Ã¼ ÀÔÃâ·Â | ÆÄÀÏ ÀÔÃâ·Â | ¹ÙÀÌÆ® ¹è¿ ÀÔÃâ·Â | ||
ÆÄÀÌÇÁ ÀÔÃâ·Â | ¿¬°áÇü ÀÔ·Â | ½ºÆ®¸µ ¹öÆÛ ÀÔ·Â |
1. ÀÚ¹Ù ÀÔÃâ·Â ¹æ½Ä
ÀÚ¹Ù ÀÔÃâ·Â ¹æ½ÄÀº Å©°Ô ¹ÙÀ̳ʸ® ÀÔÃâ·Â, ¹®ÀÚ ÀÔÃâ·Â, ±âº» µ¥ÀÌÅÍÇü ÀÔÃâ·Â, °´Ã¼ ÀÔÃâ·Â, ½ºÆ®¸² ÅäÅ«È·Î ºÐ·ùÇÒ ¼ö ÀÖ´Ù.
¹ÙÀ̳ʸ® ÀÔÃâ·Â
¹ÙÀ̳ʸ® ÀÔÃâ·Â( Binary I/O )Àº °¡Àå ±âº»ÀÌ µÇ´Â Àú¼öÁØÀÇ ÀÔÃâ·ÂÀÌ´Ù. ±âº»ÀûÀ¸·Î ¹ÙÀÌÆ® ´ÜÀ§·Î ÀÔÃâ·ÂµÇ±â ¶§¹®¿¡ ¹ÙÀÌÆ® ÀÔÃâ·ÂÀ̶ó°í Çϸç, ÆÄÀÏ ÀÔÃâ·Â ¿ª½Ã ±âº»ÀûÀ¸·Î ¹ÙÀ̳ʸ® ÀÔÃâ·Â¿¡ ÇØ´çÇÑ´Ù.¹ÙÀ̳ʸ® ÀÔÃâ·Â ¼Óµµ¸¦ ³ôÀ̱â À§ÇØ ¹öÆÛ ÀÔÃâ·Â ½ºÆ®¸²À» ÀÌ¿ëÇÒ ¼öµµ ÀÖ´Ù.
¹®ÀÚ ÀÔÃâ·Â
¹ÙÀ̳ʸ® ÀÔÃâ·ÂÀ» ÅëÇؼ ¹®ÀÚ¸¦ ÀÔÃâ·ÂÇÏ·Á¸é À¯´ÏÄÚµå¿Í Áö¿ªÄڵ带 »óÈ£ º¯°æÇØ ÁÙ ¼ö ÀÖ´Â ÄÁ¹öÅÍ°¡ ÇÊ¿äÇÏ´Ù. ÀÌ ÄÁ¹öÅ͸¦ Æ÷ÇÔÇÑ Å¬·¡½º°¡ ¹Ù·Î Reader ¹× Writer °è¿ÀÇ Å¬·¡½º´Ù. ¹ÙÀ̳ʸ® ÀÔÃâ·Âµµ ¹öÆÛ ÀÔÃâ·ÂÀ» °¡Áö°í ÀÖµíÀÌ ¹®ÀÚ ÀÔÃâ·Â( Character I/O )µµ ¹öÆÛ ÀÔÃâ·Â( BufferedReader¿Í BufferedWriter )À» °¡Áö°í ÀÖ´Ù.
±âº» µ¥ÀÌÅÍÇü ÀÔÃâ·Â
¹ÙÀ̳ʸ® ÀÔÃâ·ÂÀ» ÅëÇؼ ±âº» µ¥ÀÌÅÍÇüÀÎ byte, char, short, int, double, float, long µîÀÇ µ¥ÀÌÅ͸¦ 1:1·Î ´ëÀÀÇÏ¿© ÀÔÃâ·ÂÇÏ´Â °ÍÀÌ´Ù. ±âº» µ¥ÀÌÅÍÇü ÀÔÃâ·Â( Primitive I/O )Àº ÀÚ¹Ù ¾ð¾î°¡ »ç¿ëÇÏ´Â µ¥ÀÌÅÍÇüÀ» ±×´ë·Î ¹ÙÀ̳ʸ®·Î ´ëÀÀ½ÃŲ °ÍÀ¸·Î µ¥ÀÌÅÍ ÀÚü¸¦ ÀúÀåÇÏ°í º¹¿øÇÏ´Â µ¥ »ç¿ëÇÑ´Ù. ¸¶Âù°¡Áö·Î ¹öÆÛ ÀÔÃâ·ÂÀ» ÀÌ¿ëÇÒ ¼ö ÀÖ´Ù.
°´Ã¼ ÀÔÃâ·Â
°´Ã¼ ÀÔÃâ·Â( Object I/O )Àº ±âº» µ¥ÀÌÅÍÇü ÀÔÃâ·Â°ú ´Þ¸® °´Ã¼¸¦ ¹ÙÀÌÆ® ´ÜÀ§·Î ÀÔÃâ·ÂÇÏ´Â °ÍÀÌ´Ù. ÀÚ¹Ù °´Ã¼¸¦ ÀúÀåÇϱâ À§Çؼ´Â ´Ü¼øÈ÷ ¹ÙÀÌÆ®³ª ¹®ÀÚ·Î ÀÔÃâ·ÂÇÏ´Â °Í¿¡ ºñÇØ º¹ÀâÇÑ °úÁ¤À» °ÅÄ£´Ù. À̸¦ À§Çؼ °´Ã¼ Á÷·ÄÈ( object serialization ) ±â¹ýÀ» ÀÌ¿ëÇÑ´Ù. Á÷·Äȶõ °´Ã¼¸¦ ¹ÙÀÌÆ® ´ÜÀ§·Î ³ª´²¼ ÀÔÃâ·ÂÀÌ °¡´ÉÇÏ°Ô ¸¸µå´Â °úÁ¤À» ¸»ÇÑ´Ù.
½ºÆ®¸² ÅäÅ«È
½ºÆ®¸² ÅäÅ«È( StreamTokenizing )´Â »ç¿ëÀÚ°¡ ÁöÁ¤ÇÑ ±ÔÄ¢¿¡ µû¶ó¼ ¹®ÀÚ¿À» Àоîµé¿©¼ ƯÁ¤ÇÑ ÆĽÌÀ» °¡´ÉÇÏ°Ô Çϸç, ´Ü¾î ´ÜÀ§·Î µ¥ÀÌÅ͸¦ Àаųª ÄÞ¸¶(,), ÄÝ·Ð(:), ¼¼¹ÌÄÝ·Ð(;), µîÈ£(=)¿Í °°Àº ±âÈ£¸¦ ±¸ºÐÀÚ·Î Çؼ ¹®ÀÚ¿À» ÀоîµéÀÌ´Â µ¥ »ç¿ëÇÑ´Ù. StreamTokenizer Ŭ·¡½º´Â ¹®ÀÚ¿À» ó¸®Çϴ Ŭ·¡½º¹Ç·Î ¹®ÀÚ ±â¹Ý ÀÔÃâ·Â Ŭ·¡½ºÀÎ Reader °´Ã¼¸¦ »ý¼ºÀÚÀÇ ÀÎÀÚ°ªÀ¸·Î ÇØ¾ß ÇÑ´Ù. ÀÏ¹Ý µ¥ÀÌÅÍ ÀÔÃâ·Â Ŭ·¡½ºÀÎ InputStream °´Ã¼¸¦ ÀÌ¿ëÇÏ´Â °ÍÀº ±ÇÀåÇÏÁö ¾Ê´Â´Ù.
< ÀÔÃâ·Â ½ºÆ®¸² °ü·Ã Ŭ·¡½º >
ÀÔÃâ·Â Á¾·ù | Ŭ·¡½º ÆÄÀÏ |
¹ÙÀÌÆ® ½ºÆ®¸² | InputStream, OutputStream |
ÆÄÀÏ ½ºÆ®¸² | FileInputStream, FileOutputStream |
¹ÙÀÌÆ® ¹è¿ ½ºÆ®¸² | ByteArrayInputStream, ByteArrayOutputStream |
µ¥ÀÌÅÍ ½ºÆ®¸² | DataInputStream, DataOutputStream |
°´Ã¼ ½ºÆ®¸² | ObjectInputStream, ObjectOutputStream |
¹®ÀÚ ½ºÆ®¸² | Reader, Writer |
ÆÄÀÏ ¹®ÀÚ ½ºÆ®¸² | FileReader, FileWriter |
¹®ÀÚ ¹è¿ ½ºÆ®¸² | CharArrayReader, CharArrayWriter |
¹®ÀÚ¿ ½ºÆ®¸² | StringBufferInputStream, StringBufferReader, StringBufferWriter |
ÆÄÀÌÇÁ ÀÔÃâ·Â | PipeInputStream, PipeOutputStream PipeReader, PipeWriter |
½ºÆ®¸² ÇÊÅÍ | FilterInputStream, FilterOutputStream FilterReader, FilterWriter |
¹öÆÛ ½ºÆ®¸² | BufferedInputStream, BufferedOutputStream BufferedReader, BufferedWriter |
¹ÝȯÇü ½ºÆ®¸² | PushbackInputStream, PushbackReader |
±âŸ ½ºÆ®¸² | SequenceInputStream |
ºñ¼øÂ÷ ÀÔÃâ·Â | RandomAccessFile |
½ºÆ®¸² ÅäÅ«È | StreamTokenizer |
ÀÔ·Â ½ºÆ®¸²°ú Ãâ·Â ½ºÆ®¸²
½ºÆ®¸²À̶õ µ¥ÀÌÅ͸¦ ¹ÙÀÌÆ® ÇüÅ·ΠÀÔÃâ·ÂÇÏ´Â È帧À̶ó ÇÒ ¼ö ÀÖ´Ù. ½ºÆ®¸²Àº ½ÃÀÛÁ¡( ¼Ò½º, source )°ú Á¾·áÁ¡( ½ÌÅ©, sink )À» °¡Áö°í ÀÖÀ¸¸ç, È帣´Â ¹æÇâÀº »ý¼º ½ÃÁ¡¿¡¼ ´ÜÀÏ ¹æÇâÀ¸·Î °íÁ¤µÈ´Ù. ½ºÆ®¸²Àº »óÇϼöµµ ÆÄÀÌÇÁ¿Í À¯»çÇÑ °³³äÀ¸·Î, »ó¼öµµ¸¦ ÀÔ·Â ½ºÆ®¸²À¸·Î, Çϼöµµ¸¦ Ãâ·Â ½ºÆ®¸²À¸·Î »ý°¢ÇÏ¸é ½±°Ô ÀÌÇØÇÒ ¼ö ÀÖ´Ù.
ÀÔ·Â ½ºÆ®¸²ÀÇ ¼Ò½º¿Í ÇÁ·Î±×·¥ ³»ºÎ¿¡¼ ¹ÛÀ¸·Î ³ª°¡´Â Ãâ·Â ½ºÆ®¸²ÀÇ ½ÌÅ©¿¡´Â ´Ù¾çÇÑ ÇüÅ°¡ Á¸ÀçÇÒ ¼ö ÀÖ´Ù. ÀÔ·Â ½ºÆ®¸²ÀÇ ¼Ò½º³ª Ãâ·Â ½ºÆ®¸²ÀÇ ½ÌÅ©°¡ µÉ ¼ö ÀÖ´Â ¿¹¸¦ »ìÆ캸¸é ´ÙÀ½°ú °°´Ù.
. ¹ÙÀÌÆ® ¹è¿
. String °´Ã¼
. ÆÄÀÏ
. ÆÄÀÌÇÁ( ¿î¿µÃ¼Á¦ ¿ë¾î )
. ´Ù¸¥ ½ºÆ®¸²
. ³×Æ®¿öÅ© Á¢¼Ó
. ÄܼÖ( ÀÔ·ÂÀÇ °æ¿ì¿£ Å°º¸µå, Ãâ·ÂÀÇ °æ¿ì¿£ ȸé )
2. ÆÄÀÏ
Âü°í : http://download.oracle.com/javase/6/docs/api/java/io/File.html
ÀϹÝÀûÀ¸·Î ÀÔÃâ·ÂÀº ÆÄÀÏÀ» ÅëÇؼ ÀÌ·ç¾îÁø´Ù. ÀÚ¹Ù ¾ð¾î¿¡ À־µ ÆÄÀÏÀº ¸Å¿ì Áß¿äÇÑ °³³äÀÌ´Ù. ÇÏÁö¸¸ ÀÚ¹Ù ÀÔÃâ·Â ÆÐÅ°ÁöÀÇ File Ŭ·¡½º´Â ÀÔÃâ·Â°ú´Â Á÷Á¢ÀûÀÎ °ü·ÃÀÌ ¾ø´Ù.Áï, File °´Ã¼¸¦ ÅëÇؼ ÀÔÃâ·ÂÀ» ¼öÇàÇÏÁö ¸øÇÑ´Ù. ´Ù¸¸, File °´Ã¼´Â ÆÄÀÏ ¶Ç´Â µð·ºÅ丮¸¦ Á¢±ÙÇÏ´Â ¸Åü·Î »ç¿ëµÈ´Ù. µû¶ó¼ ½ÇÁ¦·Î ÀÔÃâ·ÂÇÏ·Á¸é ½ºÆ®¸²À̳ª ºñ¼øÂ÷ Á¢±ÙÀ» Áö¿øÇÏ´Â RandonAccessFile Ŭ·¡½º¸¦ ÀÌ¿ëÇØ¾ß ÇÑ´Ù.
File Ŭ·¡½º´Â ÆÄÀÏ ¶Ç´Â µð·ºÅ丮 Á¤º¸¸¦ »ý¼ºÇϰųª »èÁ¦ÇÏ´Â ±â´É¸¸ Á¦°øÇÑ´Ù. File »ý¼ºÀÚ´Â String °´Ã¼ÀÎ ¹®ÀÚ¿À» ÀÎÀÚ°ªÀ¸·Î Çؼ File °´Ã¼¸¦ »ý¼ºÇÑ´Ù. »ý¼ºµÈ File °´Ã¼´Â ÆÄÀϸé°ú °æ·Î( µð·ºÅ丮 ) Á¤º¸¸¦ °¡Áö°í ÀÖ´Ù. °æ·Î¿¡´Â ÇöÀç µð·ºÅ丮¿Í »ó°ü¾øÀÌ ÁöÁ¤ÇÏ´Â Àý´ë °æ·Î¿Í ÇöÀç µð·ºÅ丮¿¡ µû¶ó ÆÄÀÏ À§Ä¡°¡ º¯ÇÏ´Â »ó´ë °æ·Î°¡ ÀÖ´Ù. ÀÚ¹Ù ¾ð¾î´Â ¸ÖƼ Ç÷§ÆûÀ» Áö¿øÇϱ⠶§¹®¿¡ µð·ºÅ丮¸¦ Ç¥½ÃÇÏ´Â ÇüÅ´ ¿î¿µÃ¼Á¦¿¡ µû¶ó ´Þ¶óÁø´Ù. À©µµ¿ì¿Í À¯´Ð½ºÀÇ µð·ºÅ丮 Á¤º¸´Â ´ÙÀ½°ú °°´Ù.
¿î¿µÃ¼Á¦ | Àý´ë °æ·Î | »ó´ë °æ·Î |
À©µµ¿ì | C:\directory\sub ( Áö¿ª ÆÄÀÏ ) \\server\shared_directory( ³×Æ®¿öÅ© ÆÄÀÏ ) | .\ ÇöÀç µð·ºÅ丮 ..\ »óÀ§ µð·ºÅ丮 |
À¯´Ð½º | /usr/src | ./ ÇöÀç µð·ºÅ丮 ../ »óÀ§ µð·ºÅ丮 |
¾Õ¿¡¼ ¸»ÇÑ °Íó·³, File °´Ã¼ÀÇ ¸Þ¼Òµå¸¦ ÀÌ¿ëÇؼ ÆÄÀÏÀ» ÀÔÃâ·ÂÇÒ ¼ö´Â ¾øÁö¸¸ ½ºÆ®¸² °´Ã¼¸¦ »ý¼ºÇÒ ¶§ ÀÎÀÚ°ªÀ¸·Î ÀÌ¿ëÇÒ ¼ö´Â ÀÖ´Ù. ¶ÇÇÑ ÆÄÀÏÀÌ ÇöÀç Á¸ÀçÇÏ´ÂÁö ¿©ºÎ¿Í ÆÄÀÏ ¼Ó¼º( Àбâ Àü¿ë, ¾²±â Àü¿ë, Àб⠾²±â °¡´É )À» ¾Ë ¼ö ÀÖ´Ù. ±×¸®°í ÇöÀç µð·ºÅ丮¿¡ ÀÖ´Â ÆÄÀÏ ¸ñ·ÏÀ» ¾ò´Â ¸Þ¼Òµåµµ Á¦°øÇÑ´Ù.
File °´Ã¼´Â final·Î ÁöÁ¤µÇ¾î ÀÖ¾î ÇÑ ¹ø »ý¼ºÇÏ¸é º¯°æÇÒ ¼ö ¾ø´Ù. µû¶ó¼ File °´Ã¼ÀÇ ÂüÁ¶ º¯¼ö¿¡ ´Ù¸¥ File °´Ã¼¸¦ ÀúÀåÇÒ ¼ö ¾ø´Ù. ´ÙÀ½ ¸î °¡Áö »çÇ×Àº ÆÄÀÏ°ú °ü·ÃµÈ ¿À·ù¸¦ ÁÙÀÏ ¼ö ÀÖ´Â ¹æ¹ýÀÌ´Ù.
. FileInputStream °´Ã¼¸¦ »ý¼ºÇϱâ Àü¿¡ ÀÎÀÚ°ªÀÎ File °´Ã¼¸¦ ÅëÇؼ ÆÄÀÏÀÌ ½ÇÁ¦·Î Á¸ÀçÇÏ´Â °ÍÀÎÁö È®ÀÎÇÑ´Ù.
. File °´Ã¼ÀÇ isFile() ¸Þ¼Òµå´Â ÆÄÀÏÀÌ µð·ºÅ丮ÀÎÁö ÆÄÀÏÀÌÁö È®ÀÎÇÏ´Â ¸Þ¼Òµå´Ù.
. ÆÄÀÏÀ» Àбâ Àü¿¡ canRead() ¸Þ¼Òµå¸¦ ÀÌ¿ëÇϸé ÆÄÀÏÀÌ Àб⠼ӼºÀ» °¡Áö°í ÀÖ´ÂÁö È®ÀÎÇÒ ¼ö ÀÖ´Ù.
. ÆÄÀÏÀ» ¾²±â Àü¿¡ canWrite() ¸Þ¼Òµå¸¦ ÀÌ¿ëÇϸé ÆÄÀÏÀÌ ¾²±â ¼Ó¼ºÀ» °¡Áö°í ÀÖ´ÂÁö È®ÀÌÇÒ ¼ö ÀÖ´Ù.
´ÙÀ½Àº File °´Ã¼¸¦ ÀÌ¿ëÇÑ °£´ÜÇÑ ¿¹Á¦´Ù. File °´Ã¼ f0, f1, f2¸¦ ¸¸µé¾î File °´Ã¼ÀÇ ¸Þ¼Òµå¸¦ È£ÃâÇÏ¿© Ãâ·ÂÇÑ´Ù.
import java.io.File; publicclasstestFile{ publicstaticvoid main(String[] args){ File f0 =newFile("Name.txt"); File f1 =newFile(".."); File f2 =newFile(f1,"test.java"); // ÆÄÀÏ À̸§ System.out.println("f0.getName() = "+ f0.getName()); // ÆÄÀÏ °æ·Î System.out.println("f1.getPath() = "+ f1.getPath()); // ÆÄÀÏÀÇ Àý´ë °æ·Î System.out.println("f0.getAbsolutePath() = "+ f0.getAbsolutePath()); // ÆÄÀÏÀÇ »óÀ§ µð·ºÅ丮 System.out.println("f1.getParent() = "+ f1.getParent()); // ÆÄÀÏÀÇ Á¸Àç ¿©ºÎ System.out.println("f0.exists() = "+ f0.exists()); // ¾²±â °¡´É ¿©ºÎ System.out.println("f0.canWrite() = "+ f0.canWrite()); // Àб⠰¡´É ¿©ºÎ System.out.println("f0.canRead() = "+ f0.canRead()); // µð·ºÅ丮 ÀÎÁö ¿©ºÎ System.out.println("f1.isDirectory() = "+ f1.isDirectory()); // ÆÄÀÏÀÌ Àý´ë °æ·Î·Î ÁöÁ¤µÇ¾ú´ÂÁö ¿©ºÎ System.out.println("f2.isAbsolute() = "+ f2.isAbsolute()); // ÆÄÀÏÀÌ ¼öÁ¤µÈ ½Ã°£( longÇü ) System.out.println("f0.lastModified() = "+new java.util.Date(f0.lastModified())); // ÆÄÀÏÀÇ ±æÀÌ System.out.println("f0.length() = "+ f0.length()); String[] list = f1.list(); // ÆÄÀÏ ¸ñ·Ï( µð·ºÅ丮ÀÇ °æ¿ì ) System.out.println("f1.list() = {"); for(int i =0; i < list.length; i++) System.out.println("\t"+ list[i]); System.out.println("}"); try{ // ±âº» °æ·Î System.out.println("f1.getCanonicalPath() = "+ f1.getCanonicalPath()); }catch(Exception e){ e.printStackTrace(); } } } |
½ÇÇàȸé
f0.getName() = Name.txt f0.getAbsolutePath() = E:\HYUNKOOK\Workspace\testFile\Name.txt f1.getPath() = .. f2.getAbsolutePath() = E:\HYUNKOOK\Workspace\testFile\..\test.java f1.getParent() = null f0.exists() = true f0.canWrite() = true f0.canRead() = true f1.isDirectory() = true f2.isAbsolute() = false f0.lastModified() = Thu Feb 10 14:10:49 KST 2011 f0.length() = 8 f1.list() = { .metadata // ¡¦ testDoubleBuffering testFile testThread } f1.getCanonicalPath() = E:\HYUNKOOK\Workspace |
lastModified() ¸Þ¼Òµå´Â °¡Àå ÃÖ±ÙÀÇ °»½Å ½Ã°£À» longÇüÀ¸·Î ¸®ÅÏÇÑ´Ù. µû¶ó¼ java.util.Data Ŭ·¡½º¸¦ ÀÌ¿ëÇؼ Date °´Ã¼¸¦ »ý¼ºÇÏ¿© Ãâ·ÂÇÏ¿´´Ù. ¶ÇÇÑ list() ¸Þ¼Òµå´Â File °´Ã¼°¡ µð·ºÅ丮ÀÏ °æ¿ì¿¡ Æ÷ÇÔµÈ ÆÄÀÏ ¸ñ·ÏÀ» String[]À¸·Î ¾òÀ» ¼ö ÀÖ´Ù.
3. ¹ÙÀÌÆ® ÀÔÃâ·Â ½ºÆ®¸²
ÇÁ·Î±×·¥¿¡¼ ÀÔÃâ·ÂÀº ¸Å¿ì Áß¿äÇÑ ºÎºÐÀÌ´Ù. °¡Àå ±âº»ÀûÀÎ ÀÔÃâ·ÂÀº ÆÄÀÏ ÀÔÃâ·ÂÀ¸·Î, ´ëºÎºÐÀÇ ¾îÇø®ÄÉÀ̼ÇÀÌ µ¥ÀÌÅ͸¦ ÀúÀåÇÏ´Â µ¥ ÆÄÀÏÀ» ÀÌ¿ëÇÑ´Ù. ¶ÇÇÑ, ÇÁ·Î±×·¥ ÀÌ¿Ü¿¡µµ ³×Æ®¿öÅ© Åë½ÅÀ̳ª ¿ÜºÎ ÀåÄ¡¿Í Åë½ÅÇÏ´Â µ¥µµ ÀÔÃâ·ÂÀÌ ÇÊ¿äÇÏ´Ù. ( OSÀÇ FS – File System )À» »ý°¢ÇØ º¸ÀÚ.
¾Õ¿¡¼ ÀÚ¹Ù ÀÔÃâ·ÂÀº ½ºÆ®¸²À» ±â¹ÝÀ¸·Î ÇÏ´Â ÀÔÃâ·ÂÀ̶ó°í Çß´Ù. ½ºÆ®¸²Àº ¹ÙÀÌÆ®¸¦ ´ÜÀ§·Î ÇÏ¿© ¼øÂ÷ÀûÀ¸·Î ÀÔ·Â ¶Ç´Â Ãâ·ÂÀ» ÇÏ´Â ¹æ½ÄÀÌ´Ù. ÀÌó·³ ±âº»ÀûÀÎ ¹ÙÀÌÆ® ´ÜÀ§ ½ºÆ®¸² ÀÔÃâ·ÂÀ» Àú¼öÁØ ½ºÆ®¸²À̶ó°í ÇÑ´Ù. Àú¼öÁØÀÇ ½ºÆ®¸²Àº ¹ÙÀÌÆ® ¶Ç´Â ¹ÙÀÌÆ® ¹è¿À» ±â¹ÝÀ¸·Î µ¥ÀÌÅ͸¦ ÀÔÃâ·ÂÇÑ´Ù.
¿î¿µÃ¼Á¦´Â ÆÄÀÏÀ» ÅؽºÆ® ÆÄÀÏ°ú ¹ÙÀ̳ʸ® ÆÄÀÏ·Î ³ª´©¾î ´Ù·é´Ù. ÀÌ·¯ÇÑ ±¸º°Àº ÆÄÀÏÀ» ¿ ¶§ ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù. ÇÏÁö¸¸ ÀÚ¹Ù ¾ð¾î´Â ¸ðµç ÆÄÀÏÀ» ¼øÂ÷ÀûÀÎ ¹ÙÀÌÆ®ÀÇ ¹è¿, Áï InputStream ¶Ç´Â OutputStream Ŭ·¡½º·Î Á¦°øµÇ´Â ½ºÆ®¸²À¸·Î ó¸®ÇÑ´Ù.
ÀÔÃâ·Â ½ºÆ®¸²Àº Å©°Ô ÀÔ·Â ½ºÆ®¸²°ú Ãâ·Â ½ºÆ®¸²À¸·Î ³ª´¶´Ù. ÀÔ·Â ½ºÆ®¸²Àº ½ÃÀÛÁ¡( ¼Ò½º )À» »ý¼ºÀÚÀÇ ÀÎÀÚ°ªÀ¸·Î ÇÏ¿© »ý¼ºÇÏ°í, Ãâ·Â ½ºÆ®¸²Àº Á¾·áÁ¡( ½ÌÅ© )À» ÀÎÀÚ°ªÀ¸·Î ÇÏ¿© »ý¼ºÇÑ´Ù. ½ÃÀÛÁ¡ÀÌ ¹«¾ùÀ̳Ŀ¡ µû¶ó¼ ÀÔ·Â ½ºÆ®¸²Àº ¹ÙÀÌÆ® ¹è¿( byte array ), ÆÄÀÏ( file ), °´Ã¼( object ), ÆÄÀÌÇÁ( piped ), ¹®ÀÚ¿ ¹öÆÛ( string buffer ), ½ÃÄö½º( sequence ) µîÀ¸·Î ³ª´ ¼ö ÀÖ´Ù. Ãâ·Â ½ºÆ®¸²Àº Á¾·áÁ¡ÀÌ ¹«¾ùÀ̳Ŀ¡ µû¶ó¼ ¹ÙÀÌÆ® ¹è¿( byte array ), ÆÄÀÏ( file ), °´Ã¼( object ), ÆÄÀÌÇÁ( piped ) µîÀ¸·Î ³ª´ ¼ö ÀÖ´Ù.
ÀÌ¿Í °°Àº ±âº» ½ºÆ®¸² ÀÌ¿Ü¿¡ ½ºÆ®¸²À» °¡°øÇÏ´Â ÇÊÅÍ ½ºÆ®¸²ÀÌ Á¸ÀçÇÑ´Ù. ÇÊÅÍ ½ºÆ®¸²¿¡´Â ¹öÆÛ( buffered ), ¹ÝȯÇü( pushback ), ¶óÀÎ( line number ), µ¥ÀÌÅÍ( data ) ½ºÆ®¸² µîÀÌ ÀÖ´Ù. Ãâ·Â ½ºÆ®¸²¿¡ ÇØ´çÇÏ´Â ÇÊÅÍ ½ºÆ®¸²¿¡´Â ¹öÆÛ( buffered ), µ¥ÀÌÅÍ( data ), ÇÁ¸°Æ®( print ) ½ºÆ®¸² µîÀÌ ÀÖ´Ù.
4. ¹®ÀÚ ÀÔÃâ·Â ½ºÆ®¸²
¹ÙÀÌÆ® ÀÔÃâ·Â ½ºÆ®¸²ÀÌ ±âº»ÀûÀ¸·Î InputStream°ú OutputStream Ŭ·¡½º·ÎºÎÅÍ Á¦°øµÇ´Â °Í°ú ´Þ¸®, ¹®ÀÚ ±â¹ÝÀÇ ÀÔÃâ·Â ½ºÆ®¸²Àº Reader¿Í Writer Ŭ·¡½º·ÎºÎÅÍ Á¦°øµÈ´Ù.
¹®ÀÚ ½ºÆ®¸²Àº Áö¿ªÄÚµå¿Í À¯´ÏÄڵ带 º¯È¯ÇÏ´Â º¯È¯±â¸¦ Æ÷ÇÔÇÑ´Ù. ÀÚ¹Ù´Â À¯´ÏÄڵ带 Áö¿øÇÏÁö¸¸, ¿î¿µÃ¼Á¦´Â Áö¿ªÄڵ带 »ç¿ëÇϹǷΠ¹®ÀÚ ½ºÆ®¸²¿¡ ÀÌ·¯ÇÑ º¯È¯±â°¡ ¹Ýµå½Ã ÀÖ¾î¾ß ÇÑ´Ù. ¸®´õ´Â 8ºñÆ® ¹®ÀÚ ½ºÆ®¸²À» 16ºñÆ® À¯´ÏÄÚµå ½ºÆ®¸²À¸·Î, ¶óÀÌÅÍ´Â 16ºñÆ® À¯´ÏÄÚµå ¹®ÀÚ ½ºÆ®¸²À» ÀûÀýÇÑ 8ºñÆ® ¹®ÀÚ ½ºÆ®¸²À¸·Î º¯È¯½ÃÄÑ ÁØ´Ù.
ÀÔ·Â ½ºÆ®¸²¿¡ ´ëÀÀµÇ´Â ¸®´õ¿¡´Â ¼Ò½º Á¾·ù¿¡ µû¶ó ¹öÆÛ( buffered ), ÀÔ·Â( input stream ), ¶óÀÎ( line number ), ¹®ÀÚ ¹è¿( char array ), ÆÄÀÌÇÁ( piped ), ¹ÝȯÇü( push back ), ¹®ÀÚ¿( string ) ¸®´õ µîÀ» µé ¼ö ÀÖ´Ù. Ãâ·Â ½ºÆ®¸²¿¡ ´ëÀÀµÇ´Â ¶óÀÌÅÍ¿¡´Â ½ÌÅ© Á¾·ù¿¡ µû¶ó ¹öÆÛ( buffered ), ¹®ÀÚ ¹è¿( char array ), ÇÁ¸°Æ®( print ), ¹®ÀÚ¿( string ) ¶óÀÌÅÍ µîÀ» µé ¼ö ÀÖ´Ù.
- 2. ¹ÙÀÌÆ® ÀÔÃâ·Â ½ºÆ®¸²
ÀÔÃâ·Â ½ºÆ®¸²Àº ±âº»ÀûÀ¸·Î ¹ÙÀÌÆ®¸¦ ±â¹ÝÀ¸·Î ÇÑ ¼øÂ÷ÀûÀÎ Á¢±ÙÀ» Çã¿ëÇÑ´Ù. ÀÌ´Â ¼øÂ÷ÀûÀ¸·Î ÀÔ·ÂÇϰųª ¼øÂ÷ÀûÀ¸·Î Ãâ·ÂÇÏ´Â °ÍÀ¸·Î ÀÔÃâ·ÂÀ» ó¸®ÇÏ´Â °ÍÀÌ´Ù. ÀÌÁ¦ ÀÔÃâ·ÂÀ» À§ÇÑ Å¬·¡½º ±¸Á¶¸¦ »ìÆ캸ÀÚ.
1. ÀÔÃâ·Â Ŭ·¡½º °èÃþ ±¸Á¶
ÀÔÃâ·Â ½ºÆ®¸² Ŭ·¡½º¿Í °ü·ÃµÈ Ŭ·¡½º´Â ¿©±â¸¦ Âü°íÇÏÀÚ. http://download.oracle.com/javase/6/docs/api/java/io/package-tree.html
2. ÆÄÀÏ ÀÔÃâ·Â ½ºÆ®¸²
ÆÄÀÏ ÀÔÃâ·Â ½ºÆ®¸²À̶õ FileInputStream°ú FileOutputStream Ŭ·¡½º¸¦ ÀÌ¿ëÇÑ ÀÔÃâ·ÂÀ» ¸»ÇÑ´Ù. ÀÌµé °´Ã¼´Â »ý¼ºÀÚ È£Ã⠽à ÀÎÀÚ°ªÀ¸·Î File °´Ã¼ ¶Ç´Â ÆÄÀϸíÀ» ÀÌ¿ëÇÑ´Ù. ÆÄÀÏ¿¡¼ ÀÔÃâ·Â ½ºÆ®¸²À» ¾ò´Â °ÍÀÌ Áß¿äÇϸç, ÆÄÀÏ ÀÔÃâ·ÂÀº ±âº»ÀûÀ¸·Î ÆÄÀÏ ÀÔÃâ·Â ½ºÆ®¸²À» »ç¿ëÇÑ´Ù.
import java.io.File; import java.io.FileOutputStream; import java.io.FileInputStream; publicclasstestFileStream{ publicstaticvoid main(String[] args){ String filename ="¿¹¹®.txt"; // File °´Ã¼ »ý¼º File file =newFile(filename); try{ // File °´Ã¼·ÎºÎÅÍ FileOutputStream °´Ã¼ »ý¼º FileOutputStream out =newFileOutputStream(file); // ¹®ÀÚ¿·ÎºÎÅÍ getBytes()·Î ¹ÙÀÌÆ® ¹è¿ ¾ò±â out.write("Java Programming\n".getBytes()); out.write("Å×½ºÆ®ÁßÀÔ´Ï´Ù.\n".getBytes()); out.write("FileInputStream/FileOutputStream\nTest File\n".getBytes()); // 1ºÎÅÍ 30±îÁö byte ´ÜÀ§·Î Ãâ·Â for(int i =0; i <30; i++){ out.write((byte) i); } // ÆÄÀÏ ´Ý±â¸¦ À§ÇØ close() ¸Þ¼Òµå È£Ãâ out.close(); // ¹®ÀÚ¿·ÎºÎÅÍ FileInputStream °´Ã¼ »ý¼º FileInputStream in =newFileInputStream(filename); int b; // ÀÔ·ÂÀÌ ³¡³¯ ¶§±îÁö ¹ÙÀÌÆ® ´ÜÀ§·Î ¹Ýº¹ÀûÀ¸·Î Àбâ while((b = in.read())>-1){ System.out.print((char) b); } // ÆÄÀÏ ´Ý±â¸¦ À§ÇØ close() ¸Þ¼Òµå È£Ãâ in.close(); }catch(Exception e){ e.printStackTrace(); } } } |
½ÇÇàȸé
Java Programming FileInputStream/FileOutputStream Test File í¡¦¨«ìŠ¢´íŠ¢¬ì¢´¡®ìž¡¦ë‹ˆë‹¢´. _ |
¹®ÀÚ¿ "¿¹Á¦.txt"·ÎºÎÅÍ File °´Ã¼¸¦ »ý¼ºÇÏ°í, File °´Ã¼·ÎºÎÅÍ FileOutputStream °´Ã¼¸¦ »ý¼ºÇÑ´Ù. ¿©±â¿¡ write() ¸Þ¼Òµå¸¦ ÀÌ¿ëÇؼ Ãâ·ÂÀ» Çϴµ¥, ±âº»ÀûÀ¸·Î byte ¶Ç´Â byte[] ´ÜÀ§·Î Ãâ·ÂµÇ±â ¶§¹®¿¡ ¹®ÀÚ¿ Ãâ·ÂÀº getByte() ¸Þ¼Òµå¸¦ ÀÌ¿ëÇؼ ¹ÙÀÌÆ® ´ÜÀ§·Î ÀüȯÇÑ´Ù.
¶ÇÇÑ, 1ºÎÅÍ 30±îÁöÀÇ ¹ÙÀÌÆ®Çü ¼ö¸¦ for ¹®À» ÀÌ¿ëÇÏ¿© Â÷·Ê´ë·Î Ãâ·ÂÇÑ µÚ close() ¸Þ¼Òµå¸¦ È£ÃâÇÏ¿© ÆÄÀÏ Ãâ·ÂÀ» Á¾·áÇÑ´Ù. ´Ù½Ã À̹ø¿¡´Â ¹®ÀÚ¿ filenameÀ¸·ÎºÎÅÍ Á÷Á¢ FileInputStream °´Ã¼¸¦ »ý¼ºÇؼ ¹æ±Ý ÀúÀåÇÑ µ¥ÀÌÅ͸¦ ¹ÙÀÌÆ® ´ÜÀ§·Î ÀÔ·Â¹Þ¾Æ È¸é¿¡ Ãâ·ÂÇÑ µÚ Á¾·áÇÑ´Ù. ¿ì¼± ȸ鿡 Ãâ·ÂµÇ´Â °ÍÀº ¹®ÀÚ·Î º¯È¯µÇ¾î¼ Ãâ·ÂµÇ¸ç, 1~30 Äڵ忡 ÇØ´çÇÏ´Â ¹®Àڴ Ư¼ö ¹®ÀڹǷΠÀÌ¿¡ ÀûÀýÇÑ ¹®Á¦°¡ ȸ鿡 Ãâ·ÂµÈ´Ù.
3. ¹öÆÛ ÀÔÃâ·Â ½ºÆ®¸²
¹öÆÛ ÀÔÃâ·ÂÀ» ÀÌ¿ëÇÏ¸é µ¥ÀÌÅÍÀÇ ÀÔÃâ·Â ¼Óµµ¸¦ ³ôÀÏ ¼ö ÀÖ´Ù. - ´ÙÀ½¿¡ -
4. ÇÊÅÍ ÀÔÃâ·Â ½ºÆ®¸²
ÇÊÅÍ ÀÔÃâ·Â ½ºÆ®¸²Àº ´Ù¸¥ Á¾·ùÀÇ ÀÔÃâ·Â ½ºÆ®¸²À» Çϳª·Î ¿¬°áÇؼ ó¸®ÇÏ´Â ¿ªÇÒÀ» ÇÑ´Ù. - ´ÙÀ½¿¡ -
µ¥ÀÌÅÍ ÀÔÃâ·Â DataInputStream/DataOutputStream
< ¦À» ÀÌ·ç´Â ¸Þ¼Òµå >
DataInputStream ¸Þ¼Òµå | DataOutputStream ¸Þ¼Òµå |
byte b = dis.readByte(); | dos.wirteByte(b); |
char c = dis.readChar(); | dos.wirteChar(c); |
short s = dis.readShort(); | dos.wirteShort(s); |
int i = dis.readInt(); | dos.wirteInt(i); |
long l = dis.readLong(); | dos.wirteLong(l); |
float f = dis.readFloat(); | dos.wirteFloat(f); |
double d = dis.readDouble(); | dos.wirteDouble(d); |
Boolean bl = dis.readBoolean(); | dos.wirteBoolean(bl); |
String str = dis.readString(); | dos.wirteString(str); |
import java.io.*; publicclasstestDataStream{ publicstaticvoid main(String[] args){ String filename ="Korean.bin"; try{ // a ~ g±îÁö ±âº»Çü º¯¼ö ¼³Á¤ int a =1; float b =(float)11.4; short c =(short)6213; long d =1300012; double e =5919301931.121213049484; byte f =(byte)3; char g ='S'; System.out.println("Initial Data"); System.out.println("a (int) = "+ a); System.out.println("b (float) = "+ b); System.out.println("c (short) = "+ c); System.out.println("d (long) = "+ d); System.out.println("e (double) = "+ e); System.out.println("f (byte) = "+ f); System.out.println("g (char) = "+ g); // ±âº»Çü º¯¼ö Ãâ·Â DataOutputStream out =newDataOutputStream(newFileOutputStream(filename)); out.writeInt(a); out.writeFloat(b); out.writeShort(c); out.writeLong(d); out.writeDouble(e); out.writeByte(f); out.writeChar(g); out.close(); // ±âº»Çü º¯¼ö¿¡ µ¥ÀÌÅÍ ÀÔ·Â DataInputStream in =newDataInputStream(newFileInputStream(filename)); a = in.readInt(); b = in.readFloat(); c = in.readShort(); d = in.readLong(); e = in.readDouble(); f = in.readByte(); g = in.readChar(); in.close(); // Ãâ·Â System.out.println("DataInputStream Data(right)"); System.out.println("a (int) = "+ a); System.out.println("b (float) = "+ b); System.out.println("c (short) = "+ c); System.out.println("d (long) = "+ d); System.out.println("e (double) = "+ e); System.out.println("f (byte) = "+ f); System.out.println("g (char) = "+ g); // ´Ù½Ã DataInputStream °´Ã¼ »ý¼º in =newDataInputStream(newFileInputStream(filename)); // ¿ª¼øÀ¸·Î µ¥ÀÌÅÍ ÀÔ·Â g = in.readChar(); f = in.readByte(); e = in.readDouble(); d = in.readLong(); c = in.readShort(); b = in.readFloat(); a = in.readInt(); // À߸ø ÀÔ·ÂµÈ º¯¼ö Ãâ·Â System.out.println("DataInputStream Data(wrong)"); System.out.println("a (int) = "+ a); System.out.println("b (float) = "+ b); System.out.println("c (short) = "+ c); System.out.println("d (long) = "+ d); System.out.println("e (double) = "+ e); System.out.println("f (byte) = "+ f); System.out.println("g (char) = "+ g); }catch(Exception e){ e.printStackTrace(); } } } |
½ÇÇàȸé
Initial Data a (int) = 1 b (float) = 11.4 c (short) = 6213 d (long) = 1300012 e (double) = 5.919301931121213E9 f (byte) = 3 g (char) = S DataInputStream Data(right) a (int) = 1 b (float) = 11.4 c (short) = 6213 d (long) = 1300012 e (double) = 5.919301931121213E9 f (byte) = 3 g (char) = S DataInputStream Data(wrong) a (int) = 2097348691 b (float) = 1.1849933E-25 c (short) = -2547 d (long) = 332803137 e (double) = 1.2549843762898047E-302 f (byte) = 0 g (char) = _ |
a~g ±îÁö º¯¼ö¸¦ °¢°¢ int, float, short, long, double, byte, char¸¦ ±âº»ÇüÀ¸·Î Çؼ ÃʱⰪÀ» ÀúÀåÇÏ°í, À̸¦ DataOutputStream °´Ã¼¸¦ ÀÌ¿ëÇؼ ÆÄÀÏ·Î Ãâ·ÂÇÑ ´ÙÀ½ Á¤»óÀûÀÎ ¼ø¼·Î ÀÔ·ÂÇÏ°í, ÀÔ·Â ¼ø¼¸¦ ¿ª¼øÀ¸·Î Çؼ ÀÔ·ÂÇÑ °á°ú¸¦ Ãâ·ÂÇÑ °ÍÀÌ´Ù. ´ç¿¬È÷ ¼ø¼°¡ µÚ¹Ù²î¸é óÀ½¿¡ ÀúÀåµÈ µ¥ÀÌÅ͸¦ º¹¿øÇÒ ¼ö ¾øÀ¸¹Ç·Î µ¥ÀÌÅÍ ÀÔÃâ·Â¿¡´Â ¼ø¼¸¦ Àß ÁöÄÑ¾ß ÇÑ´Ù.
¹ÝȯÇü ÀÔ·Â ½ºÆ®¸² PushbackInputStream
- ´ÙÀ½¿¡ -
¶óÀÎ ½ºÆ®¸² LineNumberInputStream/PrintStream
- ´ÙÀ½¿¡ -
¹ÙÀÌÆ® ¹è¿ ½ºÆ®¸² ByteArrayInputStream
// ByteArrayInputStream System.out.println("ByteArrayStream Test: "); byte[] bytes ="ÀÌ ¹®ÀåÀº ByteArrayInputStreamÀ» À§ÇÑ ¹®ÀåÀÔ´Ï´Ù.".getBytes(); ByteArrayInputStream bin =newByteArrayInputStream(bytes); int ch; while((ch = bin.read())>-1){ System.out.print((char)ch); } |
½ÇÇàȸé
ByteArrayStream Test: 좥 묢¬ìž¥ì?? ByteArrayInputStreamì„ ì©«„í•©« 묢¬ìž¥ìž¡¦ë‹ˆë‹¢´. |
[Ãâó] http://blog.naver.com/hkn10004/20122267759
Ãâó: http://devx.tistory.com/entry/ÀÚ¹Ù-ÀÔÃâ·Â-java-stream [Meta Developer Story]