Перемещение файлов с переименованием при необходимости - 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();
}
}
}