Wie man schnell die Existenz einer Datei in C++ (C++11/14/17) überprüft
Hallo zusammen! Ich schreibe seit etwa einem Jahr in C++, aber ich habe immer noch keinen eindeutig besten Weg gefunden, um zu überprüfen, ob eine Datei auf der Festplatte existiert. Das Problem ist, dass ich dies sehr oft tun muss – in einer Schleife verarbeite ich Hunderte von Dateien, und jede Millisekunde zählt.
Derzeit verwende ich diesen Code:
#include <fstream>
bool fileExists(const std::string& filename) {
std::ifstream f(filename.c_str());
return f.good();
}
Er funktioniert, aber ich vermute, dass dies nicht die schnellste Variante ist, da er die gesamte Datei öffnet. Ich habe auch `stat()` ausprobiert:
#include <sys/stat.h>
bool fileExists(const std::string& name) {
struct stat buffer;
return (stat(name.c_str(), &buffer) == 0);
}
Aber das ist plattformabhängiger Code (Windows unterstützt `stat` ohne zusätzliche Makros nicht). Ich habe gehört, dass in C++17 `std::filesystem` hinzugekommen ist, bin mir aber nicht sicher, wie schnell es ist.
Frage: Welche Methode ist die schnellste und