Mover archivo del directorio actual a un nuevo directorio en Java

Mehvish Ashiq 12 octubre 2023
  1. Use el método Files.move() de Java NIO para mover archivos del directorio actual a un nuevo directorio
  2. Use el método renameTo() para mover un archivo del directorio actual a un nuevo directorio
Mover archivo del directorio actual a un nuevo directorio en Java

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.

Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook

Artículo relacionado - Java File