¿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. maven antrun copie los recursos al directorio de destino base
- 19. ¿Portar un kernel a una arquitectura diferente?
- 20. Pasar una interfaz a un proceso diferente
- 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. Copie un archivo con sus permisos originales
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