Copiar Directorios


Copiar Directorio¿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 codigo
static 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);
}

Deja un comentario