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