Jak skopiować folder oraz wszystkie podfoldery i pliki in.NET? [duplikat]

Możliwy duplikat:
najlepszy sposób na skopiowanie całej zawartości katalogu w C #

Chciałbym skopiować folder ze wszystkimi jego podfolderami i plikami z jednej lokalizacji do drugiej w .NET. jaki jest najlepszy sposób na to?

Widzę metodę kopiowania w klasie System. IO. File, ale zastanawiałem się, czy istnieje łatwiejszy, lepszy lub szybszy sposób niż indeksowanie drzewa katalogów.

Author: Community, 2009-07-01

3 answers

No i jest VisualBasic.implementacja dll, do której odwołuje się Steve, a oto coś, czego użyłem.

private static void CopyDirectory(string sourcePath, string destPath)
{
    if (!Directory.Exists(destPath))
    {
        Directory.CreateDirectory(destPath);
    }

    foreach (string file in Directory.GetFiles(sourcePath))
    {
        string dest = Path.Combine(destPath, Path.GetFileName(file));
        File.Copy(file, dest);
    }

    foreach (string folder in Directory.GetDirectories(sourcePath))
    {
        string dest = Path.Combine(destPath, Path.GetFileName(folder));
        CopyDirectory(folder, dest);
    }
}
 49
Author: Michael Petrotta,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-01 00:42:10

Michał Talaga w swoim poście pisze:

  • Wyjaśnienie Microsoftu o tym, dlaczego nie powinno być katalogu.Operacja Copy () w .NET.
  • implementacja CopyDirectory () od Microsoftu.VisualBasic.zespół dll.

Jednak rekurencyjna implementacja oparta na File.Copy() i Directory.CreateDirectory() powinna wystarczyć dla najbardziej podstawowych potrzeb.

 12
Author: Steve Guidi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-12-30 01:31:26

Jeśli nie dostaniesz nic lepszego... może użyj Process.Start, aby odpalić robocopy.exe?

 2
Author: Marc Gravell,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-30 23:54:00