Перемещение файлов с переименованием при необходимости - C#

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

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

Есть каталог, с него нужно перемещать файлы в другой, но файла могут иметь одинаковое название, нужно при наличии занятого имени к примеру добавить (2), (3).... Каталога назначения может не существовать (имя каталога создается из даты). Мои успехи пока нулевые в этом деле.

Решение задачи: «Перемещение файлов с переименованием при необходимости»

textual
Листинг программы
using System;
using System.Linq;
using System.IO;
 
namespace ConsoleApplication1
{
    class Program
    {
        static void SmartMove(string from, string to)
        {
            DirectoryInfo sourceDir = new DirectoryInfo(from);
            DirectoryInfo targetDir = new DirectoryInfo(to);
 
            if(!targetDir.Exists) targetDir.Create();
 
            var filesInTargetDir = targetDir.GetFiles().Select(f => f.Name);
            foreach (FileInfo file in sourceDir.GetFiles())
            {
                string fileName = file.Name;
                int i = 1;
                while (filesInTargetDir.Contains(fileName))
                {
                    i++;
                    fileName = string.Format("{0} ({1}).{2}", Path.GetFileNameWithoutExtension(file.FullName), i, file.Extension);
                }
                file.MoveTo(Path.Combine(to, fileName));
            }
        }
        static void Main(string[] args)
        {
            string sourcePath = "F:\\FilesToMove";                  //Папка с исходными файлами
            string targetPath = Path.Combine("F:\", DateTime.Now.ToShortDateString());   //папка назначения
            SmartMove(sourcePath, targetPath);
            Console.ReadKey();
        }
    }
}

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


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

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

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