개인참고자료/자바(네트워크)

문자 스트림 - 파일 복사 개선(BufferedReader, BufferedWriter)

경진 2008. 7. 14. 22:27
파일 복사 프로그램 개선

import java.io.*;

public class BufferFileCopy {

    public static void main(String[] args) {
        if(args.length != 2){
            System.out.println("사용법 : java FileCopy 파일명1 파일명2");
            System.exit(0);
        } //if

        FileReader fr = null;
        BufferedReader br = null;
        FileWriter fw = null;
        BufferedWriter bw = null;
        try{
            fr = new FileReader(args[0]);
            br = new BufferedReader(fr);
            fw = new FileWriter(args[1]);
            bw = new BufferedWriter(fw);
           
            char[] buffer = new char[512];
            int readcount = 0;
            while((readcount = br.read(buffer)) != -1){
                bw.write(buffer,0,readcount);
            }
            System.out.println("파일을 복사하였습니다.");
        }catch(Exception ex){
            System.out.println(ex);
        }finally{
            try{
                br.close();
                bw.close();
            }catch(Exception e){}
        }
    }
}

        FileReader fr = null;
        BufferedReader br = null;
        FileWriter fw = null;
        BufferedWriter bw = null;

FileReader 객체를 BufferedReader의 인자로 지정해서 BufferedReader 객체를 생성하고, FileWriter 객체를 BufferedWriter의 인자로 지정해서 BufferedWriter 객체를 생성했다. 이는 FileReader를 BufferedReader로 감싸므로써 FileReader에게 Buffer를 가진 것 같은 효과를 준 것이다. 물론, 마찬가지로 FileWriter도 BufferedWriter로 감싸므로써 Buffer를 가진 것처럼 해준다.

            char[] buffer = new char[512];
            int readcount = 0;
            while((readcount = br.read(buffer)) != -1){
                bw.write(buffer,0,readcount);
            }
            System.out.println("파일을 복사하였습니다.");

BufferedReader에 있는 read() 메소드를 이용해서 문자 배열 형태로 읽어 들인 후, 읽어 들인 문자 배열을 BufferedWriter에 있는 writer() 메소드를 이용해서 출력한다.