Dev JS Blog

[JAVA] 자바 파일 복사 본문

옛날 창고/개발

[JAVA] 자바 파일 복사

Dev JS 2019. 1. 5. 15:33
728x90

자바 파일 복사 





자바 파일을 복사하는 법입니다. 이 방법을 이용해서 자바로 업로드 및 다운로드를 구현할 수 있는겁니다.


저는 D드라이브 newFolder 라는 폴더에 있는 sql.jpg 파일을 복사하려 합니다.



원본파일(oriFile)과 복사파일(copyFile) 경로와 파일명에 대해서 객체를 생성해줍시다.





1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import java.io.File;
 
public class FileTest {
    
    public static void main(String[] args) {
        //원본 파일경로
        String oriFilePath = "D:\\newFolder\\sql.jpg";
        //복사될 파일경로
        String copyFilePath = "D:\\newFolder\\sql2.jpg";
        
        //파일객체생성
        File oriFile = new File(oriFilePath);
        //복사파일객체생성
        File copyFile = new File(copyFilePath);
    }
}
 
cs

그다음 원본파일을 읽고 복사를 하겠씁니다.
fileInputStream과 fileOutputStream 을 이용하겠습니다.
이름 처럼 inputStream 은 파일을 읽을 때 사용하고 outputStream 을 파일을 복사할때 씁니다.
즉 inputStream에는 읽을 파일, outputStream에는 복사파일 객체를 넣어줍니다.

여기서 툴을 사용하시는 분들이라면 당연히 에러표시가 날껍니다.
try catch 하라는 에러가 날텐데요 그 이유는 
catch 부분에 써있는 FileNotFoundException 처럼 막약 읽을 파일이 없을경우
익셉션 처리가 되도록 처리를 해주는 겁니다. 당황하지마세요~



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
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
 
public class FileTest {
    
    public static void main(String[] args) {
        //원본 파일경로
        String oriFilePath = "D:\\newFolder\\sql.jpg";
        //복사될 파일경로
        String copyFilePath = "D:\\newFolder\\sql2.jpg";
        
        //파일객체생성
        File oriFile = new File(oriFilePath);
        //복사파일객체생성
        File copyFile = new File(copyFilePath);
        
        try {
            
            FileInputStream fis = new FileInputStream(oriFile); //읽을파일
            FileOutputStream fos = new FileOutputStream(copyFile); //복사할파일
            
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}
cs

이제 마지막 단계 입니다. 
inputStream을 활용을 해야겠죠?


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
40
41
42
43
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
 
public class FileTest {
    
    public static void main(String[] args) {
        //원본 파일경로
        String oriFilePath = "D:\\newFolder\\sql.jpg";
        //복사될 파일경로
        String copyFilePath = "D:\\newFolder\\sql2.jpg";
        
        //파일객체생성
        File oriFile = new File(oriFilePath);
        //복사파일객체생성
        File copyFile = new File(copyFilePath);
        
        try {
            
            FileInputStream fis = new FileInputStream(oriFile); //읽을파일
            FileOutputStream fos = new FileOutputStream(copyFile); //복사할파일
            
            int fileByte = 0
            // fis.read()가 -1 이면 파일을 다 읽은것
            while((fileByte = fis.read()) != -1) {
                fos.write(fileByte);
            }
            //자원사용종료
            fis.close();
            fos.close();
            
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}
 
cs

while 부분이 중요합니다.

fis.read()는 1바이트씩 읽는 답니다.

더이상 읽을게 없으면 -1을 반환하게 됩니다.


그리고 마지막으로 inputStream 과 outputStream과 close()를 해줍니다.


결과를 보겠습니다.




outputStream에 했던 sql2 파일이 복사가 되었습니다.




728x90

'옛날 창고 > 개발' 카테고리의 다른 글

[Oracle] 오라클 날짜 포멧  (2) 2019.01.31
[jQuery] jQuery tooltip  (0) 2019.01.30
[java] 형변환 에러  (0) 2018.06.26
[HTML] 체크박스 & 라디오버튼 컨트롤하기  (2) 2018.04.28
[Eclipse] Eclipse 최적화 하기  (2) 2018.04.05
Comments