FullName geordnet nach LastWriteTime

02/04/2011 - 19:28 von JS | Report spam
Hallo an alle,
ich möchte eine Liste der Dateiennamen (System.IO.FileInfo.FullName)
einer bestimmten Directory wobei diese Liste nach der letzten Änderung
der Datei geordnet sein soll. (System.IO.FileInfo.LastWriteTime).
Bis jetzt habe ich nur eine langsame Lösung. Ich laden alle
Dateinamen, hole die letzte Bearbeitung und ordnen das Ganz dann. So
weit so gut, aber die Directory hat mehr als 5000 Dateien und aus
diesem Grund ist diese Lösung zu langsam.
Meine Frage :
Gibt ein eine Möglichkeit diese Liste gleich geordnet zu bekommen,
oder noch besser ich brauchen eigentlich nur die letzten aktuellsten
100 Dateien alles andere ist Geschichte.
Danke für jeden guten Rat.

MfG Joachim Schmàck
 

Lesen sie die antworten

#1 Armin Zingler
02/04/2011 - 19:53 | Warnen spam
Am 02.04.2011 19:28, schrieb JS:
Hallo an alle,
ich möchte eine Liste der Dateiennamen (System.IO.FileInfo.FullName)
einer bestimmten Directory wobei diese Liste nach der letzten Änderung
der Datei geordnet sein soll. (System.IO.FileInfo.LastWriteTime).
Bis jetzt habe ich nur eine langsame Lösung. Ich laden alle
Dateinamen, hole die letzte Bearbeitung und ordnen das Ganz dann. So
weit so gut, aber die Directory hat mehr als 5000 Dateien und aus
diesem Grund ist diese Lösung zu langsam.
Meine Frage :
Gibt ein eine Möglichkeit diese Liste gleich geordnet zu bekommen,
oder noch besser ich brauchen eigentlich nur die letzten aktuellsten
100 Dateien alles andere ist Geschichte.
Danke für jeden guten Rat.



Wie lange dauert es und welche Zeit wàre akzeptabel?

Das hier dauert 78ms bei 5800 Dateien:

Dim watch = Stopwatch.StartNew()
Dim dir As New IO.DirectoryInfo("D:\Users\Armin\Pictures\ScreenCapture\2011-04-02 19-38-25")

Dim q = From file In dir.GetFiles _
Order By file.LastWriteTimeUtc Descending _
Take 100

Dim topFiles = q.ToArray
MsgBox(watch.Elapsed.ToString)

Davon kannst du natürlich auch nur den Fullname selektieren.
LastWriteTimeUtc ist zuverlàssiger wegen doppelter Stunde bei Zeitumstellung im Herbst.

Crosspost nach de.comp.lang.dotnet.vb gesetzt.

Armin

Ähnliche fragen