Сортировка файлов по папкам - 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);
}

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


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

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

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