Dateiexistens überprüfen
-
Hallo,
ich schreibe gerade ein Programm mit c++, ich möchte wissen, wie ich herausfinde ob eine Datei schon vorhanden ist. WIe bekomme ich das mit c++ raus, damit ich die Datei nicht überschreibe.MfG
Alaska
-
Am einfachsten überprüfst du die Existenz einer Datei wohl, indem du sie zum Lesen zu öffnen versuchst:
#include <fstream> int main() { std::ifstream test("datei.txt"); if(!test) { // Datei existiert nicht } }
Das wird allerdings dann fehlschlagen, wenn du keine Leserechte auf die Datei hast. Um ganz sicher zu gehen, musst du auf etwas betriebssystemspezifisches oder auf sowas wie Boost.Filesystem zurückgreifen, was das plattformabhängige in ein plattformunabhängiges Interface kapselt.
-
ich weiß, wie man es in c macht:
#include <stdio.h> #include <errno.h> int file_exists (const char *fname) { FILE *fp; int exists; errno=0; fp=fopen(fname,"rb"); exists=(errno!=EEXIST); if(fp) fclose(fp); return exists; }
der fehlercode EEXIST ist meines wissens im ansi-c-standard auch für fopen() definiert. bleibt nur noch die frage, ob das auch die entwickler der standardbibliothek deines compilers wussten
-
Konfusius schrieb:
ich weiß, wie man es in c macht:
Was hier nur leider völlig fehl am platz ist...
-
THE_FreaK schrieb:
Konfusius schrieb:
ich weiß, wie man es in c macht:
Was hier nur leider völlig fehl am platz ist...
doch, ist am platz.
meistens sollte man auch schielen, ob die c-lösung nicht auch die bessere für c++ wäre. ich erinnere nur an den wahn, alles mit std::string zu machen statt mit char*.
-
ändert aber ja letzten endes nichts dran, dass man OS Funktionen oder Libs nutzen muss um sich über die rechte zu informieren.