2009-08-25 24 views
1

Möchten Sie die neueste Datei in einem Verzeichnis fopen()
(mit Namensschema file1.txt, file2.txt, file3.txt, etc.)
Gibt es eine API-Funktion in Visual Studio dafür?
Wenn nicht, ist es eine gute Idee, alle .TXT-Dateinamen zu lesen und zu sortieren, um den zu bekommen, den ich brauche? Gibt es einen besseren Algorithmus, auf den ich hinweisen könnte?finden neueste Dateinamen in C

Danke.

+2

Meinst du das letzte wie in der Erstellungs-/Änderungszeit oder das mit der maximalen Anzahl im Bereich von 'file [0-9] + \. Txt'? – LiraNuna

+0

maximale Anzahl wird wahrscheinlich am besten sein. Ich würde gerne die neueste Log-Datei im Verzeichnis lesen .... –

Antwort

1

Ich gehe davon aus, mit "neuesten" meinen Sie "zuletzt geänderte Datei".

Es gibt eine C-Laufzeitbibliotheksfunktion _fstat and _fstati64 (für große Dateien> 4 GB). Die Funktionssignatur für _fstat ist:

int _fstat(int file_handle, struct _stat *file_info); 

Die _STAT Struktur ein wenig nützliche Informationen über die Datei hat, aber Sie wollen wahrscheinlich das st_mtime Mitglied, das seit 00 Sekunden, um den Zeitpunkt der letzten Änderung als time_t (Zeit hat : 00: 00 UTC, 1. Januar 1970).

Es kann funktionieren, die Win32-Funktionen FindFirstFile() and FindNextFile() zu verwenden, um das Verzeichnis zu gehen, die Dateien in einem Array einer Struktur (mit dem Dateinamen geänderte Zeit) zu speichern und dann qsort_s() auf dem Array nach Uhrzeit sortieren, in absteigender Reihenfolge .

Ich hoffe, dass hilft.

+0

Danke Edmond. Meine Dateien sind NICHT> 4GB Gibt es noch einen Vorteil mit fstat, wenn möglich? Wenn möglich, würde ich immer noch in einer Array-Struktur speichern und sortieren, korrigieren? Klingt wie ich die FindXFile-Route verwenden und sortieren sollte. –

+0

Ich kann mir keinen Vorteil vorstellen, den _fstat über die 64-Bit-Version bietet, abgesehen von der etwas kleineren Größe der Stat-Struktur, die nicht viel wert zu sein scheint. Ja, Sie müssen die Werte in einem Array speichern und sortieren. Wenn Sie C++ verwenden, könnten Sie einen STL-Vektor wählen, was einfacher wäre. –

+0

Ok. Probleme mit FindNextFile haben: http://stackoverflow.com/questions/1336426/findfirstfile-and-findnextfile-question –

Verwandte Themen