J'ai trouvé un petit extrait pour faire une copie de fichier récursive en C#, mais je suis un peu perplexe. J'ai besoin essentiellement de copier une structure de répertoire à un autre endroit, le long des lignes de ce ...Copie de fichiers récursivement
Source: C: \ data \ serveurs \ mc
Cible: E: \ mc
Le code pour ma fonction de copie à partir de maintenant est ...
//Now Create all of the directories
foreach (string dirPath in Directory.GetDirectories(baseDir, "*", SearchOption.AllDirectories))
{
Directory.CreateDirectory(dirPath.Replace(baseDir, targetDir));
}
// Copy each file into it’s new directory.
foreach (string file in Directory.GetFiles(baseDir, "*.*", SearchOption.AllDirectories))
{
Console.WriteLine(@"Copying {0}\{1}", targetDir, Path.GetFileName(file));
if (!CopyFile(file, Path.Combine(targetDir, Path.GetFileName(file)), false))
{
int err = Marshal.GetLastWin32Error();
Console.WriteLine("[ERROR] CopyFile Failed on {0} with code {1}", file, err);
}
}
le problème est que dans la deuxième portée, je soit:
- utiliser
Path.GetFileName(file)
pour obtenir le nom de fichier réel sans le chemin, mais je perds le répertoire "mc" structure du répertoire ou - utiliser "fichier" sans Path.Combine.
De toute façon, je dois faire un travail de chaîne méchant. Y at-il une bonne façon de le faire en C# (mon manque de connaissance avec l'API .NET me mène à plus de compliquer les choses)
voir cette réponse http://stackoverflow.com/questions/627504/what-is-the-best-way-to-recursively-copy-contents-in-c/627518# 627518 – bpgergo