¿Cómo puedo copiar todos los contenidos en un directorio a otro sin tener que recorrer cada archivo?Copie todos los archivos en el directorio
Respuesta
No puede. Pero puede utilizar algún tipo de código sucinto como Directory.GetFiles(mydir).ToList().ForEach(f => File.Copy(f, otherdir + "\\" f);
Esto no funciona recursivamente. –
No puede. Ni Directory
ni DirectoryInfo
proporcionan un método Copy
. Necesita implementar esto usted mismo.
void Copy(string sourceDir, string targetDir)
{
Directory.CreateDirectory(targetDir);
foreach(var file in Directory.GetFiles(sourceDir))
File.Copy(file, Path.Combine(targetDir, Path.GetFileName(file)));
foreach(var directory in Directory.GetDirectories(sourceDir))
Copy(directory, Path.Combine(targetDir, Path.GetFileName(directory)));
}
Lea los comentarios para tener en cuenta algunos problemas con este enfoque simplista.
Esto solo copia archivos, no crea subdirectorios. Por lo tanto, si el destino aún no tiene la misma estructura de directorios, deberá agregar una línea al principio para crear el destino si aún no existe. – Ross
@Ross: De hecho, corregido. Tenga en cuenta que esto no copia los atributos de seguridad, como los derechos de acceso. –
con comprobar si los archivos y la carpeta existen funciona muy bien. if (! Directory.Exists (targetDir)) ... if (! File.Exists (file)) – Misi
Msdn tiene orientación sobre este - How to:Copy Directories
Ejecutar xcopy source_directory\*.* destination_directory
como un comando externo. Por supuesto, esto solo funcionará en máquinas con Windows.
No debe usar las llamadas al sistema si no es necesario. Aquí, definitivamente no es necesario. –
Es necesario dar que la pregunta indique ** sin buclear cada archivo **. – m0skit0
¿Y qué crees que está haciendo xcopy? Simplemente no quería repetir, porque pensó que había una manera más fácil. No hay Y una llamada al sistema no es ni más fácil ni una buena forma en general. ¡Es fuertemente desaconsejado! –
Puede utilizar el método FileSystem.CopyDirectory de VB para simplificar la tarea:
using Microsoft.VisualBasic.FileIO;
foo(){
FileSystem.CopyDirectory(directoryPath, tempPath);
}
Extraño a VB. Y la gente dice que puedes hacer todas las mismas cosas en C#. –
Directory.GetFiles(AppDomain.CurrentDomain.BaseDirectory + @"resources\html")
.ToList()
.ForEach(f => File.Copy(f, folder + "\\" + f.Substring(f.LastIndexOf("\\"))));
using System.IO;
string sourcePath = @"D:\test";
string targetPath = @"D:\test_new";
if (!Directory.Exists(targetPath))
{
Directory.CreateDirectory(targetPath);
}
foreach (var srcPath in Directory.GetFiles(sourcePath))
{
//Copy the file from sourcepath and place into mentioned target path,
//Overwrite the file if same file is exist in target path
File.Copy(srcPath, srcPath.Replace(sourcePath, targetPath), true);
}
Esto funciona muy bien! Copiará directorios secundarios o puede simplemente volcar todos los archivos de todos los subdirectorios en una ubicación.
/// AUTHOR : Norm Petroff
/// <summary>
/// Takes the files from the PathFrom and copies them to the PathTo.
/// </summary>
/// <param name="pathFrom"></param>
/// <param name="pathTo"></param>
/// <param name="filesOnly">Copies all files from each directory to the "PathTo" and removes directory.</param>
static void CopyFiles(String pathFrom, String pathTo, Boolean filesOnly)
{
foreach(String file in Directory.GetFiles(pathFrom))
{
// Copy the current file to the new path.
File.Copy(file, Path.Combine(pathTo, Path.GetFileName(file)), true);
// Get all the directories in the current path.
foreach (String directory in Directory.GetDirectories(pathFrom))
{
// If files only is true then recursively get all the files. They will be all put in the original "PathTo" location
// without the directories they were in.
if (filesOnly)
{
// Get the files from the current directory in the loop.
CopyFiles(directory, pathTo, filesOnly);
}
else
{
// Create a new path for the current directory in the new location.
var newDirectory = Path.Combine(pathTo, new DirectoryInfo(directory).Name);
// Copy the directory over to the new path location if it does not already exist.
if (!Directory.Exists(newDirectory))
{
Directory.CreateDirectory(newDirectory);
}
// Call this routine again with the new path.
CopyFiles(directory, newDirectory, filesOnly);
}
}
}
}
- 1. Git: copie todos los archivos en un directorio desde otra rama
- 2. Amazon S3 copie el directorio a otro directorio
- 3. Copie todos los archivos y carpetas usando msbuild
- 4. Proceso por lotes todos los archivos en el directorio
- 5. Buscar todos los archivos editables en el directorio actual
- 6. Python-FTP descarga todos los archivos en el directorio
- 7. lista de PHP todos los archivos en el directorio
- 8. gitignore todos los archivos de extensión en el directorio
- 9. CoffeeScript: compila todos los archivos .coffee en el directorio actual y en todos los subdirectorios
- 10. Listar los archivos en un directorio y todos los subdirectorios
- 11. Copie el archivo a un directorio diferente
- 12. Copie todos los directorios al servidor por FTP usando Java
- 13. Emacs como Finder/Explorer - copie los archivos
- 14. Copie los archivos de fuentes en el directorio de destino con SBT
- 15. copie todos los nombres de métodos - Intellij
- 16. Script PHP para recorrer todos los archivos en un directorio?
- 17. Buscar todos los archivos CSV en un directorio usando Python
- 18. Cómo obtener archivos en un directorio, incluidos todos los subdirectorios
- 19. Listar todos los archivos y directorios en un directorio + subdirectorios
- 20. Iterar todos los archivos en un directorio usando BOOST_FOREACH
- 21. QMake: compilando automáticamente todos los archivos en un directorio
- 22. Ejecutar todos los archivos Python en un directorio
- 23. gmake compila todos los archivos en un directorio
- 24. Git - Seguimiento automático de todos los archivos en un directorio
- 25. Ejecutar todos los archivos SQL en un directorio
- 26. Unir todos los archivos en un directorio, con un separador
- 27. fuente de todos los archivos en un directorio de .bash_profile
- 28. Eliminar todos los archivos en un directorio con Python
- 29. ¿Cómo obtener todos los archivos en un directorio?
- 30. ¿Cómo formatear todos los archivos bajo un directorio en emacs?
vistazo aquí: http://stackoverflow.com/questions/206323/how-to-execute-command-line-in-c-get-std-out-results y poner allí para el comando "copiar \ *. * YOURDIR " – fritzone