C++: Prüfen ob Datei existiert

English Deutsch

Problem:

In C++ möchtest du prüfen, ob eine bestimmte Datei existiert, aber du kannst stat() nicht verwenden, weil dein Code plattformübergreifend funktionieren muss.

Lösung

Diese Lösung ist 100% portabel (stat() ist es nicht, auch wenn es weit verbreitet unterstützt wird), aber beachte, dass sie die Datei öffnet, sodass sie fehlschlagen kann, wenn die Datei existiert, aber der Benutzer, der das Programm ausführt, keinen Zugriff darauf hat.

fexists.cpp
#include <fstream>
bool fexists(const char *filename) {
  std::ifstream ifile(filename);
  return (bool)ifile;
}

Wenn du den Dateinamen als std::string und nicht als C-String hast, kannst du diesen Schnipsel verwenden:

fexists_string.cpp
#include <fstream>
bool fexists(const std::string& filename) {
  std::ifstream ifile(filename.c_str());
  return (bool)ifile;
}

Wenn du sicher weißt, dass du Zugriff auf stat() hast, empfehle ich, stat zu verwenden. Siehe diesen Folgebeitrag für ein Beispiel, wie man das macht.


Check out similar posts by category: C/C++