Mover archivo del directorio actual a un nuevo directorio en Java
-
Use el método
Files.move()
de Java NIO para mover archivos del directorio actual a un nuevo directorio -
Use el método
renameTo()
para mover un archivo del directorio actual a un nuevo directorio
Este tutorial presenta diferentes formas de mover un archivo en Java. Aprenderemos sobre los dos métodos para mover un archivo de un directorio a otro directorio localmente (en la misma máquina).
Estos métodos incluyen el método Files.move()
del paquete Java NIO (New Input Output) y el método renameTo()
contenido en el paquete Java.io.File.
Use el método Files.move()
de Java NIO para mover archivos del directorio actual a un nuevo directorio
Podemos usar la siguiente solución si tenemos Java 7 o superior.
Código de ejemplo:
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);
}
}
}
El método main
requiere la ruta de origen y la ruta de destino para un archivo que debe moverse. Usamos el método Paths.get()
para recuperar la ruta del archivo fuente y guardarlo en una variable de tipo Path
llamada sourcePath
.
Luego, usamos el método Paths.get()
nuevamente para obtener la ruta de destino concatenando la ubicación deseada y el directorio de inicio del usuario, al que se accede mediante el uso de System.getProperty("user.home")
.
El método Files.move()
toma la ruta de origen y la ruta de destino de un archivo que debe moverse y lo mueve de sourcePath
a targetPath
sin cambiar el nombre del archivo.
El método Files.move()
está encerrado dentro del bloque try
porque puede causar la IOException
o FileAlreadyExistsException
. Sin embargo, estas excepciones se manejan correctamente en los bloques catch
.
Si queremos evitar la excepción FileAlreadyExistException
, entonces podemos reemplazar el archivo en targetPath
usando la opción REPLACE_EXISTING
de la siguiente manera:
Files.move(sourcePath, targetPath, StandardCopyOption.REPLACE_EXISTING);
Y si queremos tener un archivo con un nuevo nombre en targetPath
, entonces mantendremos sourcePath
y targetPath
iguales pero cambiaremos el nombre del archivo solo de la siguiente manera:
Path sourcePath = Paths.get("./moveFile.txt");
Path targetPath = Paths.get(System.getProperty("user.home") + "/Desktop/Files/newMoveFile.txt");
Use el método renameTo()
para mover un archivo del directorio actual a un nuevo directorio
Se prefiere la siguiente solución si tenemos Java 6.
Código de ejemplo:
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");
}
}
}
Este fragmento de código también mueve el archivo especificado de una ubicación a otra utilizando el método renameTo()
.
El método renameTo()
toma una nueva ruta de destino abstracta, cambia el nombre del archivo (si especificamos un nuevo nombre pero no lo cambiamos para esta solución) y mueve el archivo a la ubicación de destino.
Devuelve verdadero si el archivo se movió con éxito, y estamos imprimiendo un mensaje para mostrar que el archivo se movió y mostrar una advertencia si el archivo dado no se movió. Puede ver el código dado arriba.