Копирование папки с вложениями на C#
Всегда считал что у .NET в System.IO существует какой нибудь метод который реализует копирование папки с содержимым, включая все подкаталоги и файлы. Оказалось что я ошибался, и такого метода нет. Поэтому привожу пример реализации этого действия, довольно простой функцией, при помощи System.IO.DirectoryInfo.
Итак — сразу к делу, пример кода с подробным описанием что и где делается:
//begin_dir - директория источник.
//end_dir - директория приёмник.
void perebor_updates(string begin_dir, string end_dir)
{
//Берём нашу исходную папку
DirectoryInfo dir_inf = new DirectoryInfo(begin_dir);
//Перебираем все внутренние папки
foreach (DirectoryInfo dir in dir_inf.GetDirectories())
{
//Проверяем - если директории не существует, то создаём;
if (Directory.Exists(end_dir + "\\" + dir.Name) != true)
{
Directory.CreateDirectory(end_dir + "\\" + dir.Name);
}
//Рекурсия (перебираем вложенные папки и делаем для них то-же самое).
perebor_updates(dir.FullName, end_dir + "\\" + dir.Name);
}
//Перебираем файлики в папке источнике.
foreach (string file in Directory.GetFiles(begin_dir))
{
//Определяем (отделяем) имя файла с расширением - без пути (но с слешем "\").
string filik = file.Substring(file.LastIndexOf('\\'), file.Length - file.LastIndexOf('\\'));
//Копируем файлик с перезаписью из источника в приёмник.
File.Copy(file, end_dir + "\\" + filik, true);
}
}
Вот и всё.