Запретить повторное переименование - C#

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

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

Делаю бекап всех файлов в папке с расширением .txt .doc через File.Move. Если делаю так, то при повторном бекапе переименовывает уже переименованные (файлы бекап которых уже создан). Как запретить повторное переименование, а сделать чтобы пропускал файлы бэкапа и делал бекап новых файлов ?
public void FileBack(string FileName)
        {
            try
            {
                File.Move(FileName, FileName + ".backup");
            }
            catch (Exception)
            {
                
            }
        }

        public void BackDirect(string patch)
        {
            List<string> List = new List<string>{
                ".txt", ".doc"
            };
            string[] Files = Directory.GetFiles(patch);
            string[] Direct = Directory.GetDirectories(patch);
            for (int i = 0; i < Files.Length; i++)
            {
                string extension = Path.GetExtension(Files[i]);
                if (List.Contains(extension))
                {
                    FileBack(Files[i]);
                }
            }
            for (int i = 0; i < Direct.Length; i++)
            {
                BackDirect(Direct[i]);
            }
        }
Если делаю так (под 4.0), то если есть в папке хоть 1 файл бекапа, то выкидывает ошибку, что невозможно создать. Код не мой. В чем отличие между ними ?
public void FileBack(string FileName)
        {
            File.Move(FileName, FileName + ".backup"); 
        }

        public void BackDirect(string patch)
        {
 
            var BackFileName = new[]
            {
                ".txt", ".doc"
            };
 
            string[] Files = Directory.GetFiles(patch);
            string[] Direct = Directory.GetDirectories(patch);
            for (int i = 0; i < Files.Length; i++)
            {
                string extension = Path.GetExtension(Files[i]);
                if (BackFileName.Contains(extension))
                {
                    FileBack(Files[i]);
                }
            }
            for (int i = 0; i < Direct.Length; i++)
            {
                BackDirect(Direct[i]);
            }

Решение задачи: «Запретить повторное переименование»

textual
Листинг программы
        public static void FileBack(string filename)
        {
            try
            {
                File.Move(filename, filename + ".backup");
            }
            catch (Exception)
            {
 
            }
        }
 
 
        public static void BackDirect(string path)
        {
            string[] extensions = new string[] { ".txt", ".doc" };
 
            string[] files = Directory.GetFiles(path);
 
            foreach (string file in files)
            {
                if (Array.IndexOf<string>(extensions, Path.GetExtension(file).ToLower()) >= 0)
                {
                    FileBack(file);
                }
            }
        }

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


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

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

12   голосов , оценка 4.25 из 5