Prüfen, ob eine Datei mit stat existiert
English
Deutsch
Problem:
Du möchtest stat() aus dem POSIX-Header sys/stat.h verwenden, um zu prüfen, ob eine Datei mit einem gegebenen Namen existiert.
Lösung
Verwende diese Funktion:
file_exists_stat.cpp
#include <sys/stat.h>
/**
* Prüft, ob eine Datei existiert
* @return true wenn und nur wenn die Datei existiert, sonst false
*/
bool fileExists(const char* file) {
struct stat buf;
return (stat(file, &buf) == 0);
}Wenn du C++ std::string für den Dateinamen verwenden möchtest, kannst du stattdessen diese äquivalente Funktion verwenden:
file_exists_stat_string.cpp
#include <sys/stat.h>
/**
* Prüft, ob eine Datei existiert
* @return true wenn und nur wenn die Datei existiert, sonst false
*/
bool fileExists(const std::string& file) {
struct stat buf;
return (stat(file.c_str(), &buf) == 0);
}Beachte, dass diese Funktionen nicht prüfen, ob die Datei eine normale Datei ist. Sie prüfen nur, ob irgendetwas (eine normale Datei, ein UNIX-Domain-Socket, eine FIFO, eine Gerätedatei usw.) mit dem angegebenen Namen existiert.
Eine detaillierte stat()-Referenz findest du auf der Opengroup-Seite zu stat
Wenn du nicht sicher weißt, ob stat() in deiner Umgebung existiert, kannst du stattdessen die std::ifstream-Methode verwenden, die hier beschrieben ist.
Check out similar posts by category:
Allgemein
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow