Сортировка файлов по папкам - C# (184492)
Формулировка задачи:
Решил навести порядок в папке, отсортировав файлы по датам.
Нужна помощь в вопросе:
using System; using System.Collections.Generic; using System.IO; using System.Linq; namespace fileSorter01 { class Program { static void Main(string[] args) { // путь - где будет проходить сортировка string directory = @"D:\Test"; List<string> date = new List<string>(); //собираю инфу о файлах в список var fileInfos = new DirectoryInfo(directory) .GetFiles("*.*", SearchOption.AllDirectories) .ToList(); // добавляю в список date будущие названия файлов fileInfos.ForEach(f => date.Add( (f.CreationTime < f.LastWriteTime) ? f.CreationTime.ToString("dd_MM_yyyy") : f.LastWriteTime.ToString("dd_MM_yyyy"))); // удаляю повторы date = date.Distinct().ToList(); // создаю папки date.ForEach(f => { if (!Directory.Exists(string .Format(@"{0}\{1}", directory, f))) { Directory.CreateDirectory(string .Format(@"{0}\{1}", directory, f)); Console.WriteLine(string .Format("Была создана папка: {0}", f)); } }); // перемещаю файлы в эти папки foreach (var f0 in fileInfos) foreach (var f1 in date) if (f0.CreationTime.ToString("dd_MM_yyyy") == f1 || f0.LastWriteTime.ToString("dd_MM_yyyy") == f1) if (!File.Exists(string .Format(@"{0}\{1}\{2}", directory, f1, f0.Name))) { { File.Move(f0.FullName, string.Format(@"{0}\{1}\{2}", directory, f1, f0.Name)); Console.WriteLine(string .Format("Фаил {0}, был перемещен в папку {1}", f0.Name, f1)); } } Console.ReadKey(); } } }
Какие проблемы могут возникнуть?,
так сказать чтобы сортировка прошла удачно =) Потестил, всё работает нормально. Проверку на существования файла, конечно можно добавить, это даже нужно, а вот еще что может пойти не так?Решение задачи: «Сортировка файлов по папкам»
textual
Листинг программы
string directory = @"D:\Test"; foreach (var fi in new DirectoryInfo(directory).EnumerateFiles("*.*", SearchOption.AllDirectories)) { string folderDate = (fi.CreationTime < fi.LastWriteTime ? fi.CreationTime : fi.LastWriteTime).ToString("dd_MM_yyyy"); string newPath = directory + "\\" + folderDate; if (!Directory.Exists(newPath)) { Directory.CreateDirectory(newPath); Console.WriteLine("Была создана папка: {0}", newPath); } newPath += "\\" + fi.Name; File.Move(fi.FullName, newPath); Console.WriteLine("Файл {0}, был перемещен в папку {1}", fi.FullName, newPath); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д