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