2017-04-10 2 views
0

Ich muss die Dateinamen auf der Grundlage der Reihenfolge Datum abrufen. Momentan benutze ich die Funktion FindFirstFiles, um die Dateien abzurufen. Ich erhalte die Dateinamen in alphabetischer Reihenfolge (aufsteigend), aber ich möchte sie auf der Basis von Dateidaten erhalten. Wie können wir das erreichen?So holen Sie Dateien im Dateiordner mit FindFirstFiles

+0

Was meinen Sie mit „Grundlagen der Dateidaten FindFirstFiles keine Dateien in jeder sortierten Reihenfolge zurückgibt: _ .. Dies kann oder kann nicht die erste Datei oder ein Verzeichnis sein, die in einem Verzeichnis-Eintrag erscheint (z. B. den Befehl dir), wenn Sie das gleiche String-Muster für den Dateinamen erhalten, da FindFirstFile die Suchergebnisse nicht sortiert .._ – mligor

+1

Rufen Sie die Dateien ab und ordnen Sie sie dann wie gewünscht an. –

Antwort

3

FindFirstFile abrufen Dateien nicht in einer bestimmten Reihenfolge:

Das öffnet Findfirstfile Funktion eine Suche Griff und gibt Informationen über die erste Datei, die das Dateisystem findet [...]. Dies kann die erste Datei oder das erste Verzeichnis sein, die/das in einer Verzeichnisauflistungsanwendung (z. B. dem Befehl dir) angezeigt wird, wenn dasselbe Zeichenfolgezeichen für Dateinamen angegeben wird. Dies liegt daran, dass FindFirstFile die Suchergebnisse nicht sortiert.

mehr Dies ist explizit für FindNextFile dokumentiert:

Die Reihenfolge, in der die Suche die Dateien, wie alphabetische Reihenfolge zurückgibt, wird nicht garantiert, und ist auf dem Dateisystem abhängig. Wenn die Daten sortiert werden müssen, muss die Anwendung die Reihenfolge nach Erhalt aller Ergebnisse durchführen.

Wenn Sie also eine sortierte Liste benötigen, müssen Sie die Ergebnisse sortieren, wenn Sie fertig sind. Die WIN32_FIND_DATA Struktur enthält Zeitstempel. Notieren Sie sie und führen Sie eine std::sort über den jeweiligen Zeitstempeln , sobald die Ergebnisse erhalten wurden.


Dies basiert auf der Annahme, dass "basierend auf Dateidaten" ist ein Tippfehler, und "File date" statt lesen sollte. Wenn dies nicht der Fall ist, müssen Sie eine andere Vergleichsfunktion für std::sort bereitstellen.

Verwandte Themen