Ich habe eine Liste von Dateien, die ich basierend auf dem Datum sortieren möchte. Der Nachteil ist, dass jede Datei in der Liste das Datum als Teil des Dateinamens enthält. Ich möchte die Dateien basierend auf diesem Datum sortieren. Der Grund dafür ist, dass das Datum in der Dateinamenszeichenfolge mit dem Inhalt in der Datei übereinstimmt, dh die tatsächliche Datumseigenschaft jeder Datei, das Erstellungsdatum, die Änderung, der Zugriff usw. können sich ändern, wenn die Datei verschoben wird oder modifiziert und so kann ich mich nicht für meine Zwecke darauf verlassen. Ich erstelle einen benutzerdefinierten Vergleich, um ihn in der Listensortiermethode zu verwenden, aber ich wollte sehen, ob jemand da draußen noch andere bessere oder einzigartige Ansätze hat. Danke im Voraus.Sortieren einer Datei nach dem Inhalt des Dateinamens
UPDATE:
In Antwort auf Saeed Kommentar, folgt der Dateiname dieses Format:
{Test Name}_{YYYYMMDD}_{HHmmSS}.txt
Wo das YYYYMMDD und HHmmss das Datum und die Uhrzeit sind jeweils.
UPDATE 2:
Ok, habe ich einen Vergleich up geschrieben, dass der Job ganz gut hier zu tun scheint, ist es, wenn es jemand anderes hilft; es würde nicht viel Mühe kosten, es zu ändern, um nach anderen Elementen im Dateinamen zu suchen, muss nur den regulären Ausdruck ändern. Danke allen für die Anregungen, konstruktive Kritik ist immer willkommen.
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);
}
}
Was sind Ihre Dateinamen Formate und was Sie getan haben, um es zu verbessern? –