본문으로 바로가기

[JAVA] 파일 이동 방법

category 프로그래밍/JAVA 2020. 10. 19. 23:07
728x90
반응형

오늘은 자바에서 파일이동하는 방법에 대해 알아보겠습니다.

많이 사용되는 것만 추려보았습니다.

1. renameTo

제일 많이 사용하는것이 File 클래스의 renameTo입니다.

예제 코드를 한번 보시겠습니다.

=======================================================

 

String srcFile = "/root/src/test.txt";

String dstFile = "/root/dst/test.txt";

 

File src = new File(srcFile);
File dst = new File(dstFile);

src.renameTo(dst);

 

=======================================================

renameTo를 사용하면 간단합니다.

그러나 여기서 몇가지 문제가 있습니다.

renameTo를 사용하려면 적어도 dst 쪽의 디렉토리가 존재해야됩니다.

디렉토리가 없다면, 에러가 발생합니다.

즉, 위의 예제 코드에서는 /root/dst 디렉토리의 존재 여부를 판단하고, 폴더가 없으면 만들어주는 소스를 추가해야합니다.

또한, 제가 리눅스 기반으로 사용하다보니 한번씩 파일 이동이 실패하는 경우가 발생하였습니다.

폴더의 권한도 생각을 해야되고, 이런저런 불편한 부분이 많습니다.

구글링을 해보니, renameTo를 추천하지는 않았습니다.

 

 

 

 

2. Files  클래스

Files 클래스의 move를 사용하는 것입니다.

예제 코드를 한번 보겠습니다.

=======================================================

 

Path srcPath = Paths.get("/root/src/test.txt");

Path dstPath = Paths.get("/root/dst/test.txt");

 

try {

Files.move(srcPath, dstPath, StandardCopyOption.REPLACE_EXISTING););

} catch (Exception e) {
   e.printStackTrace();
}

=======================================================

위의 방법을 사용하면 option을 사용하여 파일이 존재할 경우, 덮어씌우도록 할 수 있습니다.

그러나 디렉토리가 없다면, 에러가 발생합니다.

3. FileUtils 클래스

저는 이 방법을 사용합니다.

예제 코드를 한번 보겠습니다.

=======================================================

 

String srcFile = "/root/src/test.txt";

String dstFile = "/root/dst/test.txt";

 

File src = new File(srcFile);
File dst = new File(dstFile);
      
try {
   FileUtils.moveFile(src, dst);
}
catch (Exception e) {
   e.printStackTrace();
}


=======================================================

위의 코드의 경우, 만약 복사할 곳의 폴더가 존재하지 않는다면, 폴더를 따로 만들 필요 없이 생성까지 해주게됩니다.

이런 면에서 편합니다.

다른 방법으로는 복사하는 방법을 사용하고, 원본파일을 지우기도 합니다.

선택은 여러분의 몫입니다.

오늘 포스팅은 여기까지입니다.

감사합니다.

728x90
반응형

'프로그래밍 > JAVA' 카테고리의 다른 글

[JAVA] https 인증서 jks파일  (0) 2021.03.30
[JAVA] SLF4J 에러  (0) 2020.11.04
[JAVA] final 이란  (0) 2020.10.13
[JAVA] 파일 복사  (0) 2020.10.05
[JAVA] 문자열 붙이기  (0) 2020.09.23