FileReader FileWriter FileInputStream, FileOutputStream과 기능과 사용법은 유사하다. 다른점이라면 이 클래스들은 문자 단위로 IO를 수행한다는 것이다.

 

FileReader FileWriter는 각각 InputStreamReaderOnputStreamWriter의 하위 클래스로 유니코드 문자열과 바이트의 변환 기능을 포함하고 있다.

, 바이트 처리 스트림 클래스인FileInputStream이나FileOutputStream에는 Charset이나 CharsetDecoder등과 관련된 처리가 없다는 뜻이다. 하지만InputStreamReaderOnputStreamWriter에는 이러한Charset관련 파라미터를 받아 처리를 해주는 생성자가 존재한다.

 

다음코드는FileReader FileWriter를 이용하여 파일을 복사하는 코드이지만 모든 파일은 바이트단위로 구성되어 있기때문에 실제로 바이트 단위의 IO클래스인는 FileInputStream이나 FileOutputStream클래스를 사용하는 것이 성능상 좋다.

 

 

package ch5;

 

import java.io.FileReader;

import java.io.FileWriter;

 

public class FileCopy {

 

       public static void main(String[] args) {

              if (args.length != 2) {

                     System.out.println("사용법 : java FileCopy 파일1 파일2");

                     System.exit(0);

              }// if

 

              FileReader fr = null;

              FileWriter fw = null;

              try {

                     fr = new FileReader(args[0]);

                     fw = new FileWriter(args[1]);

                     char[] buffer = new char[512];

                     int readcount = 0;

                     while ((readcount = fr.read(buffer)) != -1) {

                           fw.write(buffer, 0, readcount);

                     }

                     System.out.println("파일을 복사했습니다.");

              } catch (Exception ex) {

                     System.out.println(ex);

              } finally {

                     try {

                           fr.close();

                           fw.close();

                     } catch (Exception e) {

                     }

              }

 

       }

}

 

 

 

Posted by Steven J.S Min
,