Os dejo un procedimiento que encontré (no se donde...) y que utilicé una vez para copiar el contenido de una carpeta en otra.
DirectoryInfo origen = new DirectoryInfo(@"C:\Origen");
DirectoryInfo destino = new DirectoryInfo(@"C:\Destino");
CopyDirectory(origen, destino);
static void CopyDirectory(DirectoryInfo origen, DirectoryInfo destino)
{
if (!destino.Exists)
{
destino.Create();
}
FileInfo[] files = origen.GetFiles();
foreach (FileInfo file in files)
{
file.CopyTo(Path.Combine(destino.FullName,file.Name));
}
// Subcarpetas
DirectoryInfo[] dirs = origen.GetDirectories();
foreach (DirectoryInfo dir in dirs)
{
string destinoDir = Path.Combine(destino.FullName, dir.Name);
// llamada recusriva
CopyDirectory(dir, new DirectoryInfo(destinoDir));
}
}
DirectoryInfo destino = new DirectoryInfo(@"C:\Destino");
CopyDirectory(origen, destino);
static void CopyDirectory(DirectoryInfo origen, DirectoryInfo destino)
{
if (!destino.Exists)
{
destino.Create();
}
FileInfo[] files = origen.GetFiles();
foreach (FileInfo file in files)
{
file.CopyTo(Path.Combine(destino.FullName,file.Name));
}
// Subcarpetas
DirectoryInfo[] dirs = origen.GetDirectories();
foreach (DirectoryInfo dir in dirs)
{
string destinoDir = Path.Combine(destino.FullName, dir.Name);
// llamada recusriva
CopyDirectory(dir, new DirectoryInfo(destinoDir));
}
}
Para ello se ha usado el método CopyTo y una llamada recursiva para copiar también todas las subcarpetas contenidas en el directorio origen.
Gracias, muy bueno
ResponderEliminarOye amigo es muy bueno tu codigo, me sirvió de mucho, pero como se podría implementar un processbar?
ResponderEliminarOjala me pudieras ayudar, muchas gracias
Gracias... gracias... gracias :)
ResponderEliminarFunciona genial
ResponderEliminar