Сортировка списка файлов по времени, по имени - C#
Формулировка задачи:
Здравствуйте!
есть папка с файлами:
Файлы - это массивы снимаемые с прибора Вроде прогоняю работает нормально. Но как оказалось если массивы созданы в одну минуту, то сортировка не пашет((
например создадим в папке файл a.txt, тут же скопируем его и вставим, получив a-копия.txt.
При прогоне получим, что а-копия.txt на первом месте в списке хотя создавался вторым, а а.txt - на 2 хотя создавался первым.
Теперь пробую получить список по имени, но если честно не втыкаю, как запихнуть 0-Х файлы вначале, а уж потом остальные от минимального значения к максимальному.
но на значениях 0-Х.txt происходит исключение типа:
Если нужны ещё какая информация скажите.
(потом дальше пойдут в обработку, соответственно надо как-то их отсортировать в списке, иначе при обработке не отследишь)
: 0-Х - нулевые сигналы прибора; Х - положительное измерение прибора; -Х - отрицательное измерение прибора. Вообще хочу отсортировать следующим образом: сначала файлы 0-Х, затем файлы от min(-9) значения(с ростом)---> до max значение(9). или же допустим так сформировать список файлов: сначала 0-Х, потом отрицательные (от -0.01 до -9), затем записываются положительные(0.01->9). сейчас пока получил весь список файлов, отсортированных по времени:foreach (FileInfo file in dir.GetFiles("*.txt").OrderBy(f=>f.LastWriteTime).ToList()) { files.Add(Path.GetFullPath(file.FullName)); }
files = files.OrderBy(s => Double.Parse(Path.GetFileNameWithoutExtension(s))).ToList();
Решение задачи: «Сортировка списка файлов по времени, по имени»
textual
Листинг программы
using System; using System.Collections.Generic; using System.Globalization; using System.IO; namespace ConsoleApplication198 { class Program { static void Main(string[] args) { //создаем файлы Directory.CreateDirectory("temp"); File.CreateText("temp\\0-0.1.txt"); File.CreateText("temp\\-0.1.txt"); File.CreateText("temp\\6.2.txt"); File.CreateText("temp\\1.txt"); File.CreateText("temp\\-0.2.txt"); File.CreateText("temp\\0-6.txt"); //создаем список var list = new List<FileDesc>(); foreach (var file in Directory.GetFiles("temp\\")) list.Add(new FileDesc(file)); //сортируем list.Sort(); //выводим foreach (var file in list) Console.WriteLine(file.FilePath); Console.ReadLine(); } } class FileDesc : IComparable<FileDesc> { private FileType type; private DateTime fileDate; private float num; public string FilePath { get; private set; } public FileDesc(string fullFilePath) { FilePath = fullFilePath; var name = Path.GetFileNameWithoutExtension(fullFilePath); if (name.StartsWith("0-")) type = FileType.Zero; else if (name.StartsWith("-")) type = FileType.Negative; else type = FileType.Positive; if (type != FileType.Positive) name = name.Split('-')[1]; num = float.Parse(name, CultureInfo.InvariantCulture); fileDate = File.GetCreationTime(fullFilePath); } public int CompareTo(FileDesc other) { var res = type.CompareTo(other.type); if (res == 0) res = num.CompareTo(other.num); return res; } } enum FileType { Zero, //0-** Negative, //-** Positive // ** } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д