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