¿Cómo copio un directorio a una unidad diferente en C#?Copie un directorio a una unidad diferente
Respuesta
Puede utilizar este código para realizar su operación:
public static void CopyAll(DirectoryInfo source, DirectoryInfo target)
{
// Check if the target directory exists, if not, create it.
if (Directory.Exists(target.FullName) == false)
{
Directory.CreateDirectory(target.FullName);
}
// Copy each file into it’s new directory.
foreach (FileInfo fi in source.GetFiles())
{
Console.WriteLine(@”Copying {0}\{1}”, target.FullName, fi.Name);
fi.CopyTo(Path.Combine(target.ToString(), fi.Name), true);
}
// Copy each subdirectory using recursion.
foreach (DirectoryInfo diSourceSubDir in source.GetDirectories())
{
DirectoryInfo nextTargetSubDir =
target.CreateSubdirectory(diSourceSubDir.Name);
CopyAll(diSourceSubDir, nextTargetSubDir);
}
}
por debajo de uno es también bueno:
static public void CopyFolder(string sourceFolder, string destFolder)
{
if (!Directory.Exists(destFolder))
Directory.CreateDirectory(destFolder);
string[] files = Directory.GetFiles(sourceFolder);
foreach (string file in files)
{
string name = Path.GetFileName(file);
string dest = Path.Combine(destFolder, name);
File.Copy(file, dest);
}
string[] folders = Directory.GetDirectories(sourceFolder);
foreach (string folder in folders)
{
string name = Path.GetFileName(folder);
string dest = Path.Combine(destFolder, name);
CopyFolder(folder, dest);
}
}
puede utilizar esta función también:
FileSystem.CopyDirectory(sourceDir, destDir);
FileSystem.CopyDirectory(sourceDir, destDir);
FileSystem.CopyDirectory
se encuentra en un espacio de nombres VB y de reunión, pero que probablemente no importa.
Cómo: Copiar, Eliminar y mover archivos y carpetas (Guía de programación de C#)
http://msdn.microsoft.com/en-us/library/cc148994.aspx
C# Copiar carpeta recursiva
http://www.csharp411.com/c-copy-folder-recursively/
Eso no muestra cómo hacer una copia recursiva. –
@Matthew: Reparado. –
private String path;
public int copyAllContents(String destinationFolder, ProgressBar progressBar)
{
int countCopyFiles = 0;
if (!Directory.Exists(destinationFolder))
{ Directory.CreateDirectory(destinationFolder); }
String[] allFilesForCurrentFolder = Directory.GetFiles(path, "*.*", SearchOption.TopDirectoryOnly);
String[] subFoldersAllpath = Directory.GetDirectories(path);
for (int i = 0; i < allFilesForCurrentFolder.Length; i++)
{
try { File.Copy(allFilesForCurrentFolder[i], destinationFolder + "\\" + Path.GetFileName(allFilesForCurrentFolder[i])); countCopyFiles++; progressBar.Value++; }
catch (Exception ex) { Console.WriteLine(ex.Message.ToString()); }
}
if (subFoldersAllpath.Length == 0)
{ return allFilesForCurrentFolder.Length; };
for (int i = 0; i < subFoldersAllpath.Length; i++)
{
this.path = subFoldersAllpath[i];
String[] subFoldersAllpathLastFolder = subFoldersAllpath[i].Split('\\');
countCopyFiles += this.copyAllContents(destinationFolder + "\\" + subFoldersAllpathLastFolder[subFoldersAllpathLastFolder.Length - 1], progressBar);
}
return countCopyFiles;
}
Es mucho más fácil para otros leer su respuesta si formatea su código correctamente. Además, es mejor agregar algo de contexto a tu código. Escribe sobre por qué piensas que es una buena respuesta o qué hace de manera diferente a las otras respuestas. – mdewitt
Aquí es una extensión que funcionará en .NET 4.0+
var source = new DirectoryInfo(@"C:\Test");
var destination = new DirectoryInfo(@"E:\Test");
source.CopyTo(destination);
Incluir este archivo en su proyecto
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace System.IO
{
public static class DirectoryInfoExtensions
{
public static void CopyTo(this DirectoryInfo source, DirectoryInfo target)
{
if (!target.Exists)
target.Create();
foreach (var file in source.GetFiles())
file.CopyTo(Path.Combine(target.FullName, file.Name), true);
foreach (var subdir in source.GetDirectories())
subdir.CopyTo(target.CreateSubdirectory(subdir.Name));
}
}
}
He aquí un enfoque que copia un directorio recursivamente como una función async
:
public static async Task CopyDirectoryAsync(string sourceDirectory, string destinationDirectory)
{
if (!Directory.Exists(destinationDirectory))
Directory.CreateDirectory(destinationDirectory);
foreach (var file in Directory.GetFiles(sourceDirectory))
{
var name = Path.GetFileName(file);
var dest = Path.Combine(destinationDirectory, name);
await CopyFileAsync(file, dest);
}
foreach (var subdir in Directory.GetDirectories(sourceDirectory))
{
var name = Path.GetFileName(subdir);
var dest = Path.Combine(destinationDirectory, name);
await CopyDirectoryAsync(subdir, dest);
}
}
public static async Task CopyFileAsync(string sourceFile, string destinationFile)
{
using (var sourceStream = new FileStream(sourceFile, FileMode.Open, FileAccess.Read, FileShare.Read, 4096, FileOptions.Asynchronous | FileOptions.SequentialScan))
using (var destinationStream = new FileStream(destinationFile, FileMode.CreateNew, FileAccess.Write, FileShare.None, 4096, FileOptions.Asynchronous | FileOptions.SequentialScan))
await sourceStream.CopyToAsync(destinationStream);
}
- 1. Copie el archivo a un directorio diferente
- 2. Copie un directorio usando NSIS.
- 3. XCopiar un directorio a un destino diferente
- 4. Amazon S3 copie el directorio a otro directorio
- 5. Copie un directorio completo con phing
- 6. Directorio de sub a un servidor diferente
- 7. guiones NuGet a directorio diferente
- 8. C# Copie un archivo a otra ubicación con un nombre diferente
- 9. Copie todos los archivos en el directorio
- 10. Copie todo el contenido de un directorio en C#
- 11. SSIS: accediendo a una unidad de red usando un nombre de usuario y contraseña diferente
- 12. Copie una matriz de cadenas a otra
- 13. Copie un archivo de una carpeta a otra utilizando vbscripting
- 14. Intentando escribir un archivo en un directorio diferente usando fopen()
- 15. ¿Cómo montar un directorio de Linux desde una PC diferente a su PC con Linux local?
- 16. ¿Cómo ejecuto un programa Java desde un directorio diferente?
- 17. Necesito una acción personalizada MSI que copie un archivo del directorio fuente MSI
- 18. Pasar una interfaz a un proceso diferente
- 19. ¿Portar un kernel a una arquitectura diferente?
- 20. maven antrun copie los recursos al directorio de destino base
- 21. Copie un proyecto en SVN
- 22. Cómo copiar varios archivos desde un directorio diferente usando cp?
- 23. Ruta en src para llegar a un archivo en un directorio diferente
- 24. Generación de dependencia gcc para un directorio de salida diferente
- 25. PHP incluye dentro de un (directorio diferente) incluyen
- 26. Copie y cambie el nombre del archivo en una ubicación diferente
- 27. Copie de un archivo xml a otro - powershell
- 28. Copie una columna de una base de datos a otra
- 29. ¿Cómo extraer un solo archivo de tar a un directorio diferente?
- 30. ¿Puedo configurar un directorio de datos diferente para Internet Explorer?
lol, qué? Lo siento, no me burlo de nadie, solo pensé que esta pregunta es graciosa, la forma en que se pregunta :) – VoodooChild
Entiendo que la pregunta ha sido respondida, pero debes tratar de mejorar la calidad de la pregunta. No está muy bien escrito. –
Creo que necesitamos un nuevo motivo para cerrar: 'fácil de encontrar si el OP hace el esfuerzo' – Gishu