У меня есть список файлов, которые я хотел бы сортировать по дате. Предостережение состоит в том, что каждый файл в списке содержит дату как часть имени файла, я хочу сортировать файлы на основе этой даты. Причина этого заключается в том, что дата в строке имени файла коррелирует с содержимым, находящимся в файле, то есть фактическое свойство даты каждого файла, дата, изменение, доступ и т. Д. Может быть изменено всякий раз, когда файл перемещается или изменить, и поэтому я не могу полагаться на это для своих целей. Я создаю пользовательский сопоставитель для использования в методе сортировки списка, но мне хотелось узнать, есть ли у кого-нибудь другие лучшие или уникальные подходы к этому. Заранее спасибо.Сортировка файла по содержимому его имени файла
UPDATE:
В ответ на комментарий Саида, имя файла имеет следующий формат:
{Test Name}_{YYYYMMDD}_{HHmmSS}.txt
Где YYYYMMDD и HHMMSS являются дата и время, соответственно.
UPDATE 2:
Хорошо, я получил сравнивающий написана на том, что, кажется, делает работу очень хорошо, здесь это, если это поможет кому-то; это не потребует больших усилий, чтобы изменить его для поиска любых других элементов в имени файла, просто нужно изменить регулярное выражение. Спасибо всем за предложения, конструктивная критика всегда приветствуется.
public class TDRDateTimeComparer : IComparer<FileInfo>
{
public int Compare(FileInfo x, FileInfo y)
{
//Return if both strings are null or empty
if (string.IsNullOrEmpty(x.Name) && string.IsNullOrEmpty(y.Name))
{
return 0;
}
Regex rDateTime = new Regex(@"(19|20|21)\d\d(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])_([0-1]\d|2[0-3])([0-5]\d)([0-5]\d)");
/* NOTE: File names will already have been validated at this point, so no need to validate the date/time again.*/
string date1 = rDateTime.Match(x.Name).Value, date2 = rDateTime.Match(y.Name).Value;
DateTime d1 = DateTime.ParseExact(date1, "yyyyMMdd_HHmmss", null), d2 = DateTime.ParseExact(date2, "yyyyMMdd_HHmmss", null);
return d1.CompareTo(d2);
}
}
Каковы ваши форматы имен файлов и что вы сделали для его улучшения? – 2010-12-01 21:30:08