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