Tengo un programa C0 autoupdater. Descargará un archivo rar que contiene los archivos nuevos o modificados para la actualización de algún software. El archivo rar tiene su estructura al igual que el directorio base del software, pero solo contiene archivos o carpetas nuevos o modificados. ¿Hay una manera fácil de "combinar" estos archivos/carpetas en el directorio de destino, de modo que si el archivo/carpeta ya existe será reemplazado y si no se agregará o tengo que recorrer manualmente cada archivo/carpeta y hacer esto yo mismo? Sólo la esperanza existe una pequeña función de combinación de .NET que tiene :)C# fusionar un directorio con otro
Respuesta
El siguiente ejemplo muestra cómo copiar un directorio y su contenido.
public static void CopyAll(DirectoryInfo source, DirectoryInfo target) { if (source.FullName.ToLower() == target.FullName.ToLower()) { return; } // 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); } }
La forma más sencilla es utilizar el método FileSystem.MoveDirectory. Asegúrese de que añade una referencia a la Microsoft.VisualBasic.dll
:
using Microsoft.VisualBasic.FileIO;
...
// Merge D:\SourceDir with D:\DestDir:
FileSystem.MoveDirectory("D:\\SourceDir", "D:\\DestDir", true /* Overwrite */);
La pregunta es fusionar el directorio de origen con el directorio de destino, ¿funcionará MoveDirectory en este caso? Creo que MoveDirectory tiende a crear un nuevo directorio en destino y generará un error "No se puede crear un archivo cuando ese archivo ya existe" si el directorio ya existe. – kaushalparik27
¿Por qué creer si pudieras intentarlo? Combinará los directorios, por lo que terminará con un DestDir único con todos los contenidos combinados. – Yarik
- 1. Copiando un archivo de un directorio a otro con Ruby
- 2. Cómo fusionar eficientemente archivos gigantescos con C#
- 3. redirección de un directorio a otro con mod_rewrite
- 4. C++ ampliar un vector con otro vector
- 5. C# Obtener el directorio de trabajo de otro proceso
- 6. Incluyendo un archivo de encabezado de otro directorio
- 7. crear el archivo en otro directorio con php
- 8. SVN mover solo directorio en otro depósito (con historia)
- 9. cómo fusionar dos mapas de bits uno sobre otro
- 10. Rollback un Git fusionar
- 11. ¿Cómo copiar mis archivos de un directorio a otro?
- 12. Emacs Org-mode - ¿Exportar a otro directorio?
- 13. módulo de importación en otro directorio desde un subdirectorio "paralelo"
- 14. copia del directorio/mv a otro directorio en git
- 15. Amazon S3 copie el directorio a otro directorio
- 16. ¿Puedo copiar .git a otro directorio?
- 17. Buscar un directorio en C#
- 18. Python: Calcular ruta relativa de un directorio a otro
- 19. ¿Cómo combino un directorio en otro usando Bash?
- 20. SVN fusionar pregunta
- 21. Fusionar mapas en Go
- 22. C++ agrega un vector a otro
- 23. Fusionar dos vectores STL con un patrón de alternancia
- 24. Fusionar 2 imágenes con node.js?
- 25. Comparar (y fusionar) dos proyectos VS C#
- 26. C#: Dibujar un mapa de bits en otro, con transparencia
- 27. Cómo fusionar automáticamente 2 cabezales con mercurial
- 28. Cómo comprimir un directorio con libbz2 en C++
- 29. Buscar archivos con patrones coincidentes en un directorio C#?
- 30. ¿Cómo navegar a un directorio en C: \ con Cygwin?
Se pregunta por qué su mensaje no se muestra a mí cuando escribo uno ?? –
@FelixK. Publiqué una respuesta, luego pensé que no era la correcta, la eliminé, edité mientras estaba borrada y sin recuperar. Una práctica común, francamente. – GSerg
Oye, gracias compañero –