Как скопировать папку и все подпапки и файлы в .NET?
Возможный дубликат:
Лучший способ скопировать все содержимое каталога в С#
Я хотел бы скопировать папку со всеми ее подпапками и файлом из одного места в другое в .NET. Какой лучший способ сделать это?
Я вижу метод Copy в классе System.IO.File, но задавался вопросом, был ли более простой, лучший или более быстрый способ обхода дерева каталогов.
Ответы
Ответ 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
?