Esta publicación discutirá cómo mover todos los archivos de una carpeta a otra en C#.

1. Usando Directory.Move() método

La solución estándar para mover un directorio y todo su contenido a una nueva ubicación es el Directory.Move() método. Acepta la ruta del directorio a mover y la ruta de destino. Funciona creando un nuevo directorio de destino y moviendo todo el contenido de la carpeta de origen a él. El movimiento incluye todos los archivos y subdirectorios presentes en el directorio de origen. Finalmente, elimina el directorio de origen. Tenga en cuenta que tanto el origen como el destino pueden ser rutas relativas o absolutas.

Descargar Código

 
Si intenta moverse a un directorio que ya existe, el sistema lanzará un IOException excepción. Si la ruta de origen especificada no es válida, el DirectoryNotFoundException se lanza una excepción. Antes de invocar el Directory.Move() método, es posible que desee verificar explícitamente si la carpeta de origen existe y el destino no.

Descargar Código

 
Si desea sobrescribir el directorio de destino si ya existe, puede hacerlo invocando el Directory.Delete() método. El siguiente ejemplo ilustra.

Descargar Código

2. Usando FileInfo.MoveTo() método

Si necesita mover solo los archivos presentes en la ubicación de origen al destino, puede hacerlo usando el MoveTo() método de la FileInfo clase. Toma la ruta de destino y mueve el archivo especificado a ella. Para mover todos los archivos en un directorio, necesita invocar individualmente el MoveTo() método para cada archivo.

Descargar Código

 
El sistema arroja DirectoryNotFoundException si el directorio de origen o de destino no existe. Además, FileInfo.MoveTo() no puede sobrescribir un archivo existente en el directorio de destino, y IOException es elevado. El siguiente programa maneja ambos:

Descargar Código

3. Usando File.Move() método

Como alternativa, puede utilizar el File.Move() método para mover todos los archivos presentes en el directorio de origen al directorio de destino. Similar a MoveTo() método, necesita invocar el Move() método para cada archivo.

El siguiente ejemplo de código muestra cómo llamar a este método. Tenga en cuenta que utiliza el EnumerateFiles() método sobre el GetFiles() método, que devuelve una colección enumerable de nombres de archivo en lugar de cargar todos los nombres de archivo en la memoria.

Descargar Código

 
El programa anterior arroja DirectoryNotFoundException si alguno de los directorios no existe. Además, si ya existe un archivo en el directorio de destino, el IOException se lanza una excepción. Ambos casos se pueden manejar de la siguiente manera:

Descargar Código

Se trata de mover todos los archivos de una carpeta a otra en C#.