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

 

9.3.4 FileInputStream, FileOutputStream

 

FileInputStream, FileOutputStreamŬ·¡½º´Â ÆÄÀÏ ³»¿ëÀ» ÀоîµéÀ̰ųª, ÆÄÀÏ¿¡ ³»¿ëÀ» Ãâ·ÂÇÒ ¶§ »ç¿ëµË´Ï´Ù. ÀÌ Å¬·¡½ºµµ IOÆÐŰÁö Áß¿¡¼­ »ç¿ëºóµµ°¡ ³ôÀº Ŭ·¡½ºÁß ÇϳªÀÔ´Ï´Ù.

 

´ÙÀ½ ¿¹Á¦´Â FileInputStream°ú FileOutputStreamŬ·¡½º¸¦ »ç¿ë, ÆÄÀÏÀ» º¹»çÇÏ´Â ¿¹Á¦ÀÔ´Ï´Ù.

 

FileInputOutputStreamTest.java (FileInputStream, FileOutputStreamÀ» Å×½ºÆ®ÇÑ  ¿¹Á¦)

import java.io.*;

public class FileInputOutputStreamTest {

   public static void main(String[] args) {

       int i, len=0;

     InputStream in=null;

     OutputStream out=null;

       if(args.length < 2) {

          System.out.println("¿øº» ÆÄÀϰú º¹»çµÉ ÆÄÀÏÀÇ À̸§À» ÀÔ·ÂÇϽʽÿä!");

          System.exit(-1);

       }

       System.out.println("¿øº»ÆÄÀÏ : "+args[0]);

       System.out.println("¸ñÇ¥ÆÄÀÏ : "+args[1]);

       try {

        in = new FileInputStream(new File(args[0]));

        out = new FileOutputStream(args[1], true);

       } catch(FileNotFoundException e) {

          System.out.println(e);

       } catch(IOException e) {

          System.out.println(e);

       }

       try {

          while((i=in.read()) != -1) {

             out.write(i);

             len++;

          }

          in.close();

          out.close();

          System.out.println(len+" bytes are copied...Successfully!");

       } catch(IOException e1) {

          System.out.println(e1);

       }

   }

}

C:\JavaExample\09>javac FileInputOutputStreamTest.java

C:\JavaExample\09>java FileInputOutputStreamTest FileStreamTest01.txt FileStreamTest02.txt

¿øº»ÆÄÀÏ : FileStreamTest01.txt

¸ñÇ¥ÆÄÀÏ : FileStreamTest02.txt

94 bytes are copied...Successfully!

 

À§ÀÇ ¿¹Á¦´Â ÆÄÀÏÀ» º¹»çÇÏ´Â ÇÁ·Î±×·¥ ¿¹Á¦ÀÔ´Ï´Ù. ÀÌ ÇÁ·Î±×·¥À» ½ÇÇàÇÒ ¶§´Â ¿øº» ÆÄÀÏÀÇ À̸§°ú ¸ñÇ¥ ÆÄÀÏÀÇ À̸§À» ÁöÁ¤ÇØÁÖ¾î¾ß ÇÕ´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é ¡®¿øº» ÆÄÀϰú º¹»çµÉ ÆÄÀÏÀÇ À̸§À» ÀÔ·ÂÇϽʽÿä!¡¯¶ó´Â ¿¡·¯¹®À» Ãâ·ÂÇÏ°í¼­ ÇÁ·Î±×·¥ÀÌ Á¾·áµË´Ï´Ù. ¶ÇÇÑ ¿øº»ÆÄÀÏÀÌ ÀÌ ÇÁ·Î±×·¥ÆÄÀϰú °°Àº µð·ºÅ͸®¾È¿¡ Á¸ÀçÇØ¾ß ÇÕ´Ï´Ù. ÆÄÀÏÀÌ ´Ù¸¥ À§Ä¡³ª À̸§ÀÌ Æ²·ÈÀ» °æ¿ì¿¡´Â ¡°java.io.FileNotFoundException: Test.txt (ÁöÁ¤µÈ ÆÄÀÏÀ» ãÀ» ¼ö ¾ø½À´Ï´Ù)¡± ¶ó´Â ¿¡·¯¹®ÀÌ Ãâ·ÂµË´Ï´Ù.

 

n        if(args.length < 2) {

n           System.out.println("¿øº» ÆÄÀϰú º¹»çµÉ ÆÄÀÏÀÇ À̸§À» ÀÔ·ÂÇϽʽÿä!");

n           System.exit(-1);

n        }

 

 ±×¸®°í, »ç¿ëÀÚ°¡ ÀÔ·ÂÇÑ ¿øº»ÆÄÀÏÀ¸·Î File°´Ã¼¸¦ »ý¼ºÇϰí, ±× »ý¼ºµÈ °´Ã¼¸¦ FileInputStreamÀÇ ¸Å°³º¯¼ö·Î ÇÏ¿© FileInputStreamÀÇ °´Ã¼ inÀ» »ý¼ºÇÕ´Ï´Ù.

 

n        FileInputStream in = new FileInputStream(new File(args[0]));

 

»ý¼ºµÈ °´Ã¼¸¦ »ç¿ëÇÏ¿© FileInputStreamŬ·¡½ºÀÇ ¸â¹ö¸Þ¼­µåÀÎ read()¸Þ¼­µå¸¦ while¹®°ú °°ÀÌ »ç¿ëÇÕ´Ï´Ù.

 

n        while((i=in.read()) != -1) { };

 

À§ÀÇ ±¸¹®¿¡¼­ read()¸Þ¼­µå´Â ÀÔ·Â ½ºÆ®¸²¿¡¼­ µ¥ÀÌÅÍ ¹ÙÀÌÆ®¸¦ ÀнÀ´Ï´Ù. µ¥ÀÌÅ͸¦ ÀÐÀ» ¶§ ÇÑ ¹ÙÀÌÆ®¾¿ ÀÐ¾î µéÀ̰í, ÀÐÀº µ¥ÀÌÅÍ´Â intÇüÀÇ Á¤¼ö·Î º¯È¯µÇ¾î ¹ÝȯµË´Ï´Ù. µ¥ÀÌÅ͸¦ Àо ´ÙÀ½ Æ÷ÀÎÆ®´Â ´ÙÀ½ ¹ÙÀÌÆ®·Î À̵¿ÇÕ´Ï´Ù. ÀÌ read() ¸Þ¼­µå´Â ÀÔ·ÂÀÌ ÀÖÀ» ¶§±îÁö ½ÇÇàµÇÁö ¾Ê½À´Ï´Ù. µ¥ÀÌÅÍÀÇ ³¡¿¡ µµ´ÞÇϸé -1ÀÌ ¹ÝȯµË´Ï´Ù.

 

 FileOutputStreamÀÇ °´Ã¼µµ »ý¼ºÇÏ¿©¾ß ÇÕ´Ï´Ù. À§ÀÇ ¿¹Á¦¿¡¼­´Â FileOutputStreamÀÇ °´Ã¼¸¦ »ý¼ºÇÒ ¶§ ÆÄÀÏ À̸§°ú booleanŸÀÔÀÇ º¯¼öµµ °°ÀÌ ÁöÁ¤ÇÏ¿´½À´Ï´Ù. true°ªÀ» °¡Áö¸é ¸ñÇ¥ÆÄÀÏÀÇ ³¡¿¡¼­ºÎÅÍ ÀÐÀº ³»¿ëÀ» °¡Á®´Ù º¹»ç¸¦ Çϰí, falseÀÌ¸é ¸ñÇ¥ÆÄÀÏÀÇ ³»¿ëÀ» ´Ù »èÁ¦ÇÑ ÈÄ ÀÐÀº ³»¿ëÀ» º¹»çÇÕ´Ï´Ù

 

n        out = new FileOutputStream(args[1], true);

n        out.write(i);

 

 ÀÐÀº byteµéÀº write(int b)¸Þ¼­µå¸¦ »ç¿ëÇÏ¿© ÁöÁ¤µÈ byte¸¦ FileOutputStream¿¡ ±â·ÏÇÕ´Ï´Ù.

 

FileInputStream »ý¼ºÀÚ¸Þ¼­µå

public FileInputStream(File file)  : ÁöÁ¤µÈ File °´Ã¼¿¡¼­ Àбâ À§ÇØ ÀÔ·Â ÆÄÀÏ ½ºÆ®¸²À» ÀÛ¼ºÇÕ´Ï´Ù.

public FileInputStream(FileDescriptor fdObj)  : ÁöÁ¤µÈ ÆÄÀÏ ¼³¸íÀÚ¿¡¼­ Àбâ À§ÇØ ÀÔ·Â ÆÄÀÏ ½ºÆ®¸²À» ÀÛ¼ºÇÕ´Ï´Ù.

public FileInputStream(String name)  : ÁöÁ¤µÈ À̸§ÀÇ ÆÄÀÏ¿¡¼­ Àбâ À§ÇØ ÀÔ·Â ÆÄÀÏ ½ºÆ®¸²À» ÀÛ¼ºÇÕ´Ï´Ù.

 

FileInputStream ÁÖ¿ä ¸â¹ö¸Þ¼­µå

public int available()  : ½ÇÇàÀ» Áß´ÜÇÏÁö ¾Ê°í ÆÄÀÏ ÀÔ·Â ½ºÆ®¸²¿¡¼­ ÀÐÀ» ¼ö ÀÖ´Â ¹ÙÀÌÆ®ÀÇ ¼ö¸¦ ¹ÝȯÇÕ´Ï´Ù.

public void close()  : ÆÄÀÏ ÀÔ·Â ½ºÆ®¸²À» ´Ý°í ½ºÆ®¸²°ú ¿¬°üµÈ ½Ã½ºÅÛ ÀÚ¿øÀ» ÇØÁ¦ÇÕ´Ï´Ù.

protected  void finalize()  : ´õ ÀÌ»ó ÂüÁ¶ÇÏÁö ¾ÊÀ» °æ¿ì ÆÄÀÏ ÀÔ·Â ½ºÆ®¸²ÀÇ close ¸Þ¼­µå¸¦ ´Ý½À´Ï´Ù.

public FileDescriptor getFD()  : ½ºÆ®¸²°ú ¿¬°üµÈ ºÒÅõ¸í(opaque) ÆÄÀÏ ¼³¸íÀÚ °´Ã¼¸¦ ¸®ÅÏÇÕ´Ï´Ù.

public int read()  : ÀÔ·Â ½ºÆ®¸²¿¡¼­ µ¥ÀÌÅÍ ¹ÙÀÌÆ®¸¦ ÀнÀ´Ï´Ù.

public int read(byte[] b)  : ÃÖ´ë b.length ¹ÙÀÌÆ®ÀÇ µ¥ÀÌÅ͸¦ ÀÔ·Â ½ºÆ®¸²¿¡¼­ ¹ÙÀÌÆ®ÀÇ ¹è¿­·Î ÀнÀ´Ï´Ù.

public int read(byte[] b, int off, int len)  : ÃÖ´ë len ¹ÙÀÌÆ®ÀÇ µ¥ÀÌÅ͸¦ ÀÔ·Â ½ºÆ®¸²¿¡¼­ ¹ÙÀÌÆ®ÀÇ ¹è¿­·Î ÀнÀ´Ï´Ù.

public long skip(long n)  : ÀÔ·Â ½ºÆ®¸²¿¡¼­ n ¹ÙÀÌÆ®ÀÇ µ¥ÀÌÅ͸¦ °Ç³Ê¶Ú ÈÄ ¹ö¸³´Ï´Ù.

 

FileOutputStream »ý¼ºÀÚ¸Þ¼­µå

public FileOutputStream(File file)  : ÁöÁ¤µÈ File °´Ã¼¿¡ ±â·ÏÇϱâ À§ÇÑ ÆÄÀÏ Ãâ·Â ½ºÆ®¸²À» ÀÛ¼ºÇÕ´Ï´Ù.

public FileOutputStream(FileDescriptor fdObj)  : ÁöÁ¤µÈ ÆÄÀÏ ¼³¸íÀÚ¿¡ ±â·ÏÇϱâ À§ÇÑ Ãâ·Â ÆÄÀÏ ½ºÆ®¸²À» ÀÛ¼º public ÇÕ´Ï´Ù.

public FileOutputStream(String name)  : ÁöÁ¤µÈ À̸§ÀÇ ÆÄÀÏ¿¡ ±â·ÏÇϱâ À§ÇÑ Ãâ·Â ÆÄÀÏ ½ºÆ®¸²À» ÀÛ¼ºÇÕ´Ï´Ù.

public FileOutputStream(String name, boolean append)  : ÁöÁ¤µÈ ½Ã½ºÅÛ Á¾¼Ó ÆÄÀϸíÀ¸·Î Ãâ·Â ÆÄÀÏÀ» ÀÛ¼ºÇÕ´Ï´Ù.

 

FileOutputStream ÁÖ¿ä ¸â¹ö¸Þ¼­µå

public void close() : ÆÄÀÏ ÀÔ·Â ½ºÆ®¸²À» ´Ý°í ½ºÆ®¸²°ú ¿¬°üµÈ ½Ã½ºÅÛ ÀÚ¿øÀ» ÇØÁ¦ÇÕ´Ï´Ù.

protected void finalize() : ½ºÆ®¸²À» ´õ ÀÌ»ó ÂüÁ¶ÇÏÁö ¾ÊÀ» °æ¿ì ÆÄÀÏ ÀÔ·Â ½ºÆ®¸²ÀÇ close()¸Þ¼­µå¸¦ ´Ý½À´Ï´Ù.

public FileDescriptor getFD() : ½ºÆ®¸²°ú ¿¬°üµÈ ÆÄÀÏ ¼³¸íÀÚ¸¦ ¹ÝȯÇÕ´Ï´Ù.

public void write(byte[] b) : b.length°³ÀÇ ¹ÙÀÌÆ®¸¦ ÁöÁ¤µÈ ¹ÙÀÌÆ® ¹è¿­¿¡¼­ ÆÄÀÏ Ãâ·Â ½ºÆ®¸²¿¡ ±â·ÏÇÕ´Ï´Ù.

public void write(byte[] b, int off, int len) : len°³ÀÇ ¹ÙÀÌÆ®¸¦ ¿ÀÇÁ¼Â off¿¡¼­ ½ÃÀÛÇÏ¿© ÁöÁ¤µÈ ¹ÙÀÌÆ® ¹è¿­¿¡¼­ ÆÄÀÏ Ãâ·Â ½ºÆ®¸²¿¡ ±â·ÏÇÕ´Ï´Ù.

public void write(int b) : ÁöÁ¤µÈ ¹ÙÀÌÆ®¸¦ ÆÄÀÏ Ãâ·Â ½ºÆ®¸²¿¡ ±â·ÏÇÕ´Ï´Ù.

 



jabookÀúÀÚ¸íÇÔ
Á¦¸ñ:¼Ò¼³°°ÀºÀÚ¹Ù2ºÎ
ÀúÀÚ:ÃÖ¿µ°ü