Подтвердить что ты не робот

Как скопировать папку и все подпапки и файлы в .NET?

Возможный дубликат:
Лучший способ скопировать все содержимое каталога в С#

Я хотел бы скопировать папку со всеми ее подпапками и файлом из одного места в другое в .NET. Какой лучший способ сделать это?

Я вижу метод Copy в классе System.IO.File, но задавался вопросом, был ли более простой, лучший или более быстрый способ обхода дерева каталогов.

4b9b3361

Ответ 1

Ну, там реализация VisualBasic.dll, которую цитирует Стив, и вот что-то, что я использовал.

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);
    }
}

Ответ 2

Михал Талага ссылается на следующее сообщение :

  • Объяснение Microsoft о том, почему не должно быть операции Directory.Copy() в .NET.
  • Реализация CopyDirectory() из сборки Microsoft.VisualBasic.dll.

Однако рекурсивная реализация на основе File.Copy() и Directory.CreateDirectory() должна быть достаточной для самых основных потребностей.

Ответ 3

Если вы не получите ничего лучшего... возможно, используйте Process.Start для запуска robocopy.exe?