Java의 현재 디렉토리에서 새 디렉토리로 파일 이동
-
Java NIO의
Files.move()
메소드를 사용하여 현재 디렉토리에서 새 디렉토리로 파일 이동 -
renameTo()
메소드를 사용하여 현재 디렉토리에서 새 디렉토리로 파일 이동
이 자습서에서는 Java에서 파일을 이동하는 다양한 방법을 제공합니다. 파일을 한 디렉토리에서 다른 디렉토리로 로컬(동일한 시스템에서)로 이동하는 두 가지 방법에 대해 알아보겠습니다.
이러한 메소드에는 [Java NIO](New Input Output) 패키지의 Files.move()
메소드와 Java.io.File 패키지에 포함된 renameTo()
메소드가 포함됩니다.
Java NIO의 Files.move()
메소드를 사용하여 현재 디렉토리에서 새 디렉토리로 파일 이동
Java 7 이상이 있으면 다음 솔루션을 사용할 수 있습니다.
예제 코드:
import java.io.IOException;
import java.nio.file.*;
public class MoveFile {
public static void main(String[] args) {
Path sourcePath = Paths.get("./moveFile.txt");
Path targetPath = Paths.get(System.getProperty("user.home") + "/Desktop/Files/moveFile.txt");
try {
Files.move(sourcePath, targetPath);
} catch (FileAlreadyExistsException ex) {
System.out.println("The target path already has a target file");
} catch (IOException exception) {
System.out.format("I/O error: %s%n", exception);
}
}
}
main
메소드에는 이동해야 하는 파일의 소스 경로와 대상 경로가 필요합니다. Paths.get()
메소드를 사용하여 소스 파일의 경로를 검색하고 sourcePath
라는 Path
유형 변수에 저장합니다.
그런 다음 Paths.get()
메소드를 다시 사용하여 원하는 위치와 System.getProperty("user.home")
를 사용하여 액세스하는 사용자의 홈 디렉토리를 연결하여 대상 경로를 가져옵니다.
Files.move()
메소드는 이동해야 하는 파일의 소스 경로와 대상 경로를 가져와 파일 이름을 변경하지 않고 sourcePath
에서 targetPath
로 이동합니다.
Files.move()
메소드는 IOException
또는 FileAlreadyExistsException
을 유발할 수 있기 때문에 try
블록으로 묶여 있습니다. 그러나 이러한 예외는 catch
블록에서 적절하게 처리됩니다.
FileAlreadyExistException
을 피하려면 다음과 같이 REPLACE_EXISTING
옵션을 사용하여 targetPath
에 있는 파일을 교체할 수 있습니다.
Files.move(sourcePath, targetPath, StandardCopyOption.REPLACE_EXISTING);
그리고 targetPath
에 새 이름을 가진 파일을 갖고 싶다면 sourcePath
와 targetPath
는 동일하게 유지하지만 파일 이름은 다음과 같이 변경합니다.
Path sourcePath = Paths.get("./moveFile.txt");
Path targetPath = Paths.get(System.getProperty("user.home") + "/Desktop/Files/newMoveFile.txt");
renameTo()
메소드를 사용하여 현재 디렉토리에서 새 디렉토리로 파일 이동
Java 6이 있는 경우 다음 솔루션이 선호됩니다.
예제 코드:
import java.io.*;
public class MoveFile {
public static void main(String[] args) {
File file = new File(".\\moveFile.txt");
if (file.renameTo(new File("E:\\moveFile.txt"))) {
System.out.println("File is moved successfully");
} else {
System.out.println("File is not moved");
}
}
}
이 코드 조각은 또한 renameTo()
메서드를 사용하여 지정된 파일을 한 위치에서 다른 위치로 이동합니다.
renameTo()
메서드는 새 추상 대상 경로를 사용하여 파일의 이름을 바꾸고(새 이름을 지정했지만 이 솔루션을 위해 이름을 바꾸지 않은 경우) 파일을 대상 위치로 이동합니다.
파일이 성공적으로 이동되면 true를 반환하고 파일이 이동되었음을 나타내는 메시지를 인쇄하고 지정된 파일이 이동되지 않으면 경고를 표시합니다. 위에 주어진 코드를 볼 수 있습니다.