Tip/Trick: Cómo copiar una carpeta

Esta mañana necesitaba copiar un directorio en otro, pero me encontré con un "pequeño problema" (estamos mal acostumbrados con el framework). El caso es que System.IO.FileInfo tiene un método CopyTo() para copiar en otro directorio, por lo que nosotros podríamos pensar que System.IO.DirectoryInfo tendría el equivalente para directorio pero no, así que tenemos que crear nosotros el nuestro y esto fue lo que hice:

public void CopyDirectory(string From, string To)
{
    //Creamos el directorio de la aplicacion
    DirectoryInfo dir = new DirectoryInfo(From);

    //Creamos la ruta del directorio donde vamos a copiar
    string _directory = to + "\\" + dir.Name;

    //Creamos el directorio
    Directory.CreateDirectory(_directory);

    //Recorremos todos los archivos
    foreach (FileInfo _file in dir.GetFiles())
    {
        //Copiamos el archivo en el directorio
        _file.CopyTo(_directory);
    }

    //Recorremos todos sus directorios
    foreach (DirectoryInfo _dir in dir.GetDirectories())
    {
        //Repetimos lo mismo para el siguiente subdirectorio
        CopyDirectory(_dir.FullName, _directory);
    }
}

Espero que os sea útil.

Un saludo

No Comments