본문 바로가기

카테고리 없음

java 파일 복사

출처 : http://goppa.tistory.com/entry/JAVA-FileStream%EC%9D%84-%EC%9D%B4%EC%9A%A9%ED%95%9C-%ED%8C%8C%EC%9D%BC-%EB%B3%B5%EC%82%AC

File Stream을 이용한 파일 복사


?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
 
/**
 * FileStream을 이용한 파일 복사 예제(한 바이트 단위)
 */
 
public class FileCopy {
    /*
     * FileCopy 프로그램의 실행
     * java FileCopy 원본파일이름 목표파일이름
     * 예) java FileCopy s.exe t.exe
     * s.exe는 같은 디렉터리 상에 존재해야 한다.
     */
    public static void main(String[] args) throws IOException{
        int i, len = 0;
        FileInputStream fis = new FileInputStream(args[0]);
        FileOutputStream fos = new FileOutputStream(args[1]);
        long psecond = System.currentTimeMillis();
        while((i=fis.read()) != -1){
            fos.write(i);
            len++;
        }
        fis.close();
        fos.close();
        psecond = System.currentTimeMillis() - psecond;
         
        System.out.println(len + " bytes " + psecond + " miliseconds");
    }
}


Buffered Stream을 이용한 파일 복사
* File 스트림보다 Buffered 스트림이 훨씬 빠른 시간에 파일 복사가 된다.

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
 
/**
 * Buffered Stream을 이용한 파일 복사 예제(한 바이트 단위)
 *
 * - File 스트림보다 Buffered 스트림이 훨씬 빠른 시간에 파일 복사가 된다.
 * [필수] 데이터의 용량이 큰 경우 무조건 Buffered 스트림으로 변환해서 사용한다.
 */
 
public class BufferedFileCopy {
    /*
     * BufferedFileCopy 프로그램의 실행
     * java BufferedFileCopy 원본파일이름 목표파일이름
     * 예) java BufferedFileCopy s.exe t.exe
     * s.exe는 같은 디렉터리 상에 존재해야 한다.
     */
    public static void main(String[] args) throws IOException{
        int i, len = 0;
        FileInputStream fis = new FileInputStream(args[0]);
        FileOutputStream fos = new FileOutputStream(args[1]);
        BufferedInputStream bis = new BufferedInputStream(fis);
        BufferedOutputStream bos = new BufferedOutputStream(fos);
         
        long psecond = System.currentTimeMillis();
        while((i=bis.read()) != -1){
            bos.write(i);
            len++;
        }
        bis.close();
        bos.close();
        psecond = System.currentTimeMillis() - psecond;
        System.out.println(len + " bytes, " + psecond + " miliseconds");
    }
     
}