Tengo una carpeta con 10 archivos de texto en C: \ TEXTFILES \ unidad en mi máquina. Quiero copiar la carpeta TEXTFILES y su contenido completamente de mi máquina a otra máquina. Cómo copiar lo mismo usando C#.Copia de carpeta en C#
Respuesta
using System;
using System.IO;
class DirectoryCopyExample
{
static void Main()
{
DirectoryCopy(".", @".\temp", true);
}
private static void DirectoryCopy(
string sourceDirName, string destDirName, bool copySubDirs)
{
DirectoryInfo dir = new DirectoryInfo(sourceDirName);
DirectoryInfo[] dirs = dir.GetDirectories();
// If the source directory does not exist, throw an exception.
if (!dir.Exists)
{
throw new DirectoryNotFoundException(
"Source directory does not exist or could not be found: "
+ sourceDirName);
}
// If the destination directory does not exist, create it.
if (!Directory.Exists(destDirName))
{
Directory.CreateDirectory(destDirName);
}
// Get the file contents of the directory to copy.
FileInfo[] files = dir.GetFiles();
foreach (FileInfo file in files)
{
// Create the path to the new copy of the file.
string temppath = Path.Combine(destDirName, file.Name);
// Copy the file.
file.CopyTo(temppath, false);
}
// If copySubDirs is true, copy the subdirectories.
if (copySubDirs)
{
foreach (DirectoryInfo subdir in dirs)
{
// Create the subdirectory.
string temppath = Path.Combine(destDirName, subdir.Name);
// Copy the subdirectories.
DirectoryCopy(subdir.FullName, temppath, copySubDirs);
}
}
}
}
De MSDN
Esto se ve bien si el origen y el destino de las máquinas están conectados. Pero el código anterior arroja una excepción si la máquina de destino no está conectada o puede esperar que las credenciales del usuario se conecten. Luego, en este tipo de escenarios, el código anterior falla. ¿Hay alguna manera de superar este tipo de excepciones durante la transferencia de archivos de una máquina a otra? – venkat
¿Qué espera que sea el resultado si la máquina de destino no está conectada o espera que las credenciales completen la operación? Creo que una excepción sería el comportamiento apropiado si la máquina de destino no está disponible, ya que no puedo pensar en ninguna forma de forzar el destino en línea. Si se requieren credenciales, quizás se muestre un cuadro de diálogo para solicitar las credenciales. –
La solución no funciona si hay dos niveles de jerarquía de carpetas. Simplemente lo copia a la carpeta base. – whihathac
Encontrará todo lo que necesita en el espacio de nombres System.IO
, y específicamente en las clases File
y Directory
.
-1 no es útil. – toddmo
- Compartir la carpeta de destino.
- Hay muchas maneras de hacerlo. Ver siguientes:
Copy Folders in C# using System.IO
Copy the entire contents of a directory in C#
string path = @"C:\TEXTFILES\";
string path2 = @"P:\myNetworkPath\tesssst";
try
{
Directory.CreateDirectory(path2);
foreach (string fileName in Directory.GetFiles(path))
{
File.Copy(
Path.Combine(path, fileName),
Path.Combine(path2, fileName), true);
}
}
catch
{
Console.WriteLine("Exception");
}
Para obtener una copia más profunda, ver:
http://www.codeproject.com/KB/files/copydirectoriesrecursive.aspx
private void copyDirectory(string strSource, string strDestination)
{
if (!Directory.Exists(strDestination))
{
Directory.CreateDirectory(strDestination);
}
DirectoryInfo dirInfo = new DirectoryInfo(strSource);
FileInfo[] files = dirInfo.GetFiles();
foreach(FileInfo tempfile in files)
{
tempfile.CopyTo(Path.Combine(strDestination,tempfile.Name));
}
DirectoryInfo[] directories = dirInfo.GetDirectories();
foreach(DirectoryInfo tempdir in directories)
{
copyDirectory(Path.Combine(strSource, tempdir.Name), Path.Combine(strDestination, tempdir.Name));
}
}
- 1. SVN Copia de troncal a rama, también copia carpeta troncal?
- 2. contenido de la copia de Robocopy de la carpeta actual
- 3. Copia de clase C++ (copia de puntero)
- 4. copia profunda en C#
- 5. Powershell Suprimir copia de elemento 'La carpeta ya existe' error
- 6. Visual Studio: DLL dependientes de copia de destino de carpeta
- 7. En Google Drive SDK, ¿cómo se copia una carpeta?
- 8. Cómo pelar una carpeta durante la copia Ant
- 9. Copia tipo implícita en C#
- 10. const en constructor de copia en C++
- 11. ¿Cuándo copia Eclipse los recursos a la carpeta de salida?
- 12. lista de copia de archivos de una carpeta a otra en I
- 13. Copia de archivo de rendimiento en C#?
- 14. Copia de una cadena en C
- 15. Copia de archivo asincrónico/Mover en C#
- 16. estructura src/carpeta en C++?
- 17. C++ constructor de copia, los temporales y la semántica copia
- 18. C# - Esperando que se complete una operación de copia
- 19. Copia de datos en la carpeta de datos de la aplicación en el iPhone
- 20. Pregunta sobre copia superficial en C++
- 21. Crear una copia profunda en C#
- 22. "borrar" copia ctor/asignación en C++ 11
- 23. C# ¿Por qué App.config se copia en mi carpeta de depuración y liberación después de la compilación?
- 24. Ant archivos de copia
- 25. ¿Copia el archivo de imagen de la url web a la carpeta local?
- 26. Objetivo de MSBuild _CopyWebApplication no copia todos los archivos necesarios en la carpeta bin
- 27. generador de copia del generador de C#
- 28. Carpeta de trabajo en ASP.NET
- 29. Powershell 2 elemento de copia que crea una carpeta si no existe
- 30. C++ devolución de una copia objeto
favor me ayude con un código de ejemplo. Como necesito copiar la carpeta desde una máquina servidor a otra máquina servidor – venkat
@sukmar, no hay forma de copiar un directorio usando una sola función .NET, esto es por seguridad. Deberá escribir su propia función. Ver mi respuesta para más detalles. – serhio
.NET podría darnos este método de "alto nivel" en el marco. – Seva