C#: FileSystemInfo[] Array sortieren

Ich habe hier eine ganze Latte von Dateien, welche ich geordnet der Reihe nach einlesen wollte.
Normalerweise haben Dateien hier das Format „YYYYMMDD.log“, irgendjmd. der in diesem Fall nicht mitgedacht hatte, gab ihnen „DD.MM.YYYY.log“ als Benennung.

So hatte ich jetzt also folgende Dateien liegen:

05.12.2008.log
12.02.2009.log
11.08.2009.log
02.01.2010.log

Diese Dateien habe ich nun mit folgendem Code eingelesen:

1
2
DirectoryInfo di = new DirectoryInfo(@"C:\logs\");
FileSystemInfo[] files = di.GetFileSystemInfos();

… und hatte ein FileSystemInfo[] Array – nur leider in der völlig falschen Reihenfolge, die da ging:

02.01.2010.log
05.12.2008.log
11.08.2009.log
12.02.2009.log

Also brauchte ich etwas um mir die Dateien in dem Array sortieren zu lassen.
Dies sieht dann für .NET 2.0 so aus:

1
2
3
4
5
6
7
DirectoryInfo di = new DirectoryInfo(@"C:\logs\");
FileSystemInfo[] files = di.GetFileSystemInfos();
 
Array.Sort<FileSystemInfo>(files, delegate(FileSystemInfo a, FileSystemInfo b)
{
    return a.CreationTime.CompareTo(b.CreationTime);
});

Oder für .NET3.5 mit Linq so:

1
2
3
4
DirectoryInfo di = new DirectoryInfo(@"C:\logs\");
FileSystemInfo[] files = di.GetFileSystemInfos();
 
var orderedFiles = files.OrderBy(f => f.CreationTime);

Und das Array ist schön geordnet 🙂

leave your comment

*

Unterstütze den Frickelblog!