JAVA/입출력 스트림과 파일 입출력

05. 파일 복사 응용프로그램 작성

euncoding-240213 2024. 3. 14. 21:07

파일 입출력 스트림의 응용으로 파일을 복사하는 프로그램 작성에 대해 소개합니다. 파일은 문자들로 이루어진 텍스트 파일과 이미지나 오디오 혹은 그래픽 등 바이너리 코드로 이루어진 바이너리 파일로 나뉜다. 바이너리 파일은 바이트 스트림으로 읽고 써야 정확하게 복사가 이루어진다. 그러나 텍스트 파일은 문자 스트림이나 바이트 스트림 둘 다 사용해도 복사에 문제가 없다.

 

텍스트 파일 복사

문자 스트림을 이용하여 텍스트 파일을 복사한다. FileReader를 이용하여 text 파일을 읽고, FileWriter로 텍스트 파일에 복사한다. 파일 경로명은 File 객체를 이용한다. 이미지 파일이나 워드, ppt, hwp 파일 등은 복사할 수 없다.

 

바이너리 파일 복사

바이트 스트림을 이용하여 바이너리 파일을 복사한다. 파일의 각 바이트를 단순 바이너리로 취급하므로 이미지, 동영상, 실행파일뿐 아니라 텍스트 파일도 복사할 수 있다.

 

블록 단위로 파일 고속복사

텍스트 파일 복사나 바이너리 파일 복사는 한 바이트씩 읽고 쓰기 때문에 큰 파일의 경우 복사 시간이 오래 걸린다. 복사 속도를 높이려면 BufferedInput/OutputStream 을 이용하거나 블록단위로 읽고 쓰도록 수정하면 된다.

byte [] buf = new byte[1024*100];  // 100KB 버퍼

while (true) {

    int n = fi.read(buf);

    fo.write(buf, 0, n);

    if ( n < buf. length) break; }