Копирование папок - C#

Узнай цену своей работы

Формулировка задачи:

Всем доброго времени суток. Мне необходимо копировать папку с файлами в другую папку для этого я использую:
        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);
            }
        }
Но при выполнении выдает ошибку в доступе.
пробовал запускать с админ правами таже картина

Решение задачи: «Копирование папок»

textual
Листинг программы
using System;
using System.IO;
 
namespace ConsoleApplication3
{
    class Program
    {
        static void Main(string[] args)
        {
            CopyDirectory(@"E:\Новая папка\ChartingAutomation", @"E:\Новая папка\destFolder");
 
            Console.ReadLine();
        }
 
        private static void CopyDirectory(string sourceDirectoryPath, string destinationDirectoryPath)
        {
            try
            {
                var sourceDirectoryInfo = new DirectoryInfo(sourceDirectoryPath);
 
                var destinationDirectoryInfo = new DirectoryInfo(Path.Combine(destinationDirectoryPath, sourceDirectoryInfo.Name));
 
                if (!destinationDirectoryInfo.Exists)
                {
                    destinationDirectoryInfo.Create();
                }
 
                CopyDirectoryRecursive(sourceDirectoryPath, destinationDirectoryInfo.FullName);
            }
            catch (Exception)
            {
            }
        }
 
        private static void CopyDirectoryRecursive(string sourceDirectoryPath, string destinationDirectoryPath)
        {
            var sourceDirectoryInfo = new DirectoryInfo(sourceDirectoryPath);
            var destinationDirectoryInfo = new DirectoryInfo(destinationDirectoryPath);
 
            if (!sourceDirectoryInfo.Exists) return;
 
            try
            {
                if (!destinationDirectoryInfo.Exists) destinationDirectoryInfo.Create();
 
                foreach (var fileInfo in sourceDirectoryInfo.GetFiles())
                {
                    try
                    {
                        File.Copy(fileInfo.FullName, Path.Combine(destinationDirectoryInfo.FullName, fileInfo.Name));
                    }
                    catch (Exception)
                    {
                        //Обработка ошибок при копировании файла.
                    }
                }
 
                foreach (var directoryInfo in sourceDirectoryInfo.GetDirectories())
                {
                    CopyDirectoryRecursive(directoryInfo.FullName, Path.Combine(destinationDirectoryInfo.FullName, directoryInfo.Name));
                }
            }
            catch (Exception)
            {
            }
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.846 из 5
Похожие ответы