¿Cómo copiar un Directorio(incluyendo SubDirectorios y Archivos) utilizando Net Framework?.
(Siempre utilizando una aplicación de Consola), No olvidar de hacer referencia a System.IO.
Primero Creamos un procedimiento(void) llamado Copiar.
static void Copiar(DirectoryInfo diOrigenArg,DirectoryInfo diDestinoArg,bool blSobreEscribir) { DirectoryInfo[] diSubDirectorios=diOrigenArg.GetDirectories(); FileInfo[] fiArchivos = diOrigenArg.GetFiles(); if (!diDestinoArg.Exists) { Console.WriteLine("Creando la carpeta {0}",diDestinoArg.Name); diDestinoArg.Create(); } foreach (DirectoryInfo diSubDirectorio in diSubDirectorios) { Copiar(diSubDirectorio,new DirectoryInfo(string.Format("{0}\\{1}",diDestinoArg.FullName,diSubDirectorio.Name)),true); } foreach (FileInfo fiArchivo in fiArchivos) { Console.WriteLine("Copiando el Archivo {0} en {1}", fiArchivo.Name, diDestinoArg.FullName); fiArchivo.CopyTo(string.Format("{0}\\{1}", diDestinoArg.FullName, fiArchivo.Name),blSobreEscribir); } }
En el procedimiento Main completamos el codigostatic void Main(string[] args) { Console.Title = "Copiar Directorio - @dsullon v1.0"; ConsoleKeyInfo ki; string RutaOrigen; string RutaDestino; do { Console.Clear(); Console.Write("Ingrese la Ruta Origen: "); RutaOrigen = Console.ReadLine(); Console.Write("Ingrese la Ruta Destino: "); RutaDestino = Console.ReadLine(); Console.ResetColor(); DirectoryInfo diOrigen = new DirectoryInfo(RutaOrigen); DirectoryInfo diDestino= new DirectoryInfo(RutaDestino); Console.ForegroundColor = ConsoleColor.DarkYellow; Copiar(diOrigen, diDestino, true); Console.WriteLine("¿Desea Continuar(S/N)?"); ki=Console.ReadKey(); } while (ki.Key==ConsoleKey.S); }