2 Stimmen

Was ist ein guter Weg, um die zuletzt erstellte Datei in einem Ordner in c# zu finden?

Ich habe einen Netzwerkordner, der bis zu 10.000 Dateien enthalten kann (normalerweise etwa 5000).

Was ist der schnellste Weg kann ich den Dateipfad der zuletzt erstellten Datei in diesem Ordner mit c# erhalten?

Derzeit verwende ich das unten stehende Verfahren, aber ich wollte wissen, ob es einen schnelleren Weg gibt.

Danke.

DirectoryInfo di = new DirectoryInfo(xmlFileLocation);
var feedFiles = di.GetFiles("*.xml");
var sortedFeedFile = from s in feedFiles
                     orderby s.CreationTime descending
                     select s;

if(sortedFeedFile.Count() > 0){
    mostRecentFile = sortedFeedFile.First();
}

5voto

Keith Smith Punkte 3525

Für das Sortieren der Dateien benötigen Sie O(nlogn) Zeit. Wenn Sie nur die zuletzt erstellten Dateien benötigen, wäre es schneller, einfach die Dateien zu durchsuchen und die neuesten zu finden - O(n).

1voto

RichardOD Punkte 28349

Ich schätze, dass Ihre beste Chance darin besteht, einen Win32-API-Aufruf zu erstellen - dies kann schneller sein oder auch nicht, aber es könnte eine Untersuchung wert sein. Siehe WIN32_FILE_ATTRIBUTE_DATA Struktur um dies zu tun.

0voto

Jason Punkte 16206

0voto

Handcraftsman Punkte 6635

Hier wird die FileInfo abgerufen, oder null, wenn es keine Dateien gibt, ohne Sortierung:

var feedFiles = di.GetFiles("*.xml");
FileInfo mostRecentFile = null;
if (feedFiles.Any())
{
    mostRecentFile = feedFiles
        .Aggregate((x, c) => x.CreationTime > c.CreationTime ? x : c);
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X