Skip to content

Instantly share code, notes, and snippets.

@Fhernd
Created July 6, 2015 16:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Fhernd/aa30a6c9a48db1f9a5af to your computer and use it in GitHub Desktop.
Save Fhernd/aa30a6c9a48db1f9a5af to your computer and use it in GitHub Desktop.
Copia recursiva de directorios y archivos en C#.
// OrtizOL - xCSw - http://ortizol.blogspot.com
using System;
using System.IO;
namespace Receta.CSharp.R0503
{
public class CopiarContenidoDirectorio
{
public static void Main(string[] args)
{
Console.WriteLine();
// Comprueba que se hayan pasado argumentos desde
// la línea de comandos:
if (args.Length != 2)
{
Console.WriteLine("Uso desde la línea de comandos: \n" +
"\tCopiarContenidoDirectorio.exe [RutaOrigen] [RutaDestino]");
Console.ReadLine();
return;
}
// Directorios de orgien y destino:
DirectoryInfo directorioOrigen = new DirectoryInfo(args[0]);
DirectoryInfo directorioDestino = new DirectoryInfo(args[1]);
// Invoca al método `CopiarDirectorio` para copiar el
// contenido de la ruta de origen a la ruta de destino:
CopiarDirectorio(directorioOrigen, directorioDestino);
Console.WriteLine("Copia satisfactoria.");
Console.WriteLine();
}
public static void CopiarDirectorio(DirectoryInfo origen, DirectoryInfo destino)
{
// Comprueba que el destino exista:
if (!destino.Exists)
{
destino.Create();
}
// Copia todos los archivos del directorio actual:
foreach(FileInfo archivo in origen.EnumerateFiles())
{
archivo.CopyTo(Path.Combine(destino.FullName, archivo.Name));
}
// Procesamiento recursivo de subdirectorios:
foreach (DirectoryInfo directorio in origen.EnumerateDirectories())
{
// Obtención de directorio de destino:
string directorioDestino = Path.Combine(destino.FullName, directorio.Name);
// Invocación recursiva del método `CopiarDirectorio`:
CopiarDirectorio(directorio, new DirectoryInfo(directorioDestino));
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment