Boost: filesystem, Schreibrechte überprüfen?
-
Hallo,
gibt es eine möglichkeit mit der Boost lib "filesystem" zu prüfen ob eine Datei schreibrecht besitzt? Und wenn nicht: Wie geht es ohne boost? (es muss geprüft werden befor ein ofstream erstellt wird ;))
Vielen Dank schonmal!
-
Hallo,
es gibt für so etwas die Funktion access().Unter Unix ist sie in <unistd.h>, unter Windows in <io.h>:
int access(char const * path, int mode);Um das ganze Portable zumachen würde Ich das ganze einfach per Preprozessor regeln.
#ifdef __unix__ # include <unistd.h> # define WRITABLE W_OK #elif __WIN32__ || _MSC_VER # include <io.h> # define WRITABLE 02 #else # error "os not supported" #endif if(access("pfad/zur/datei.blup", WRITABLE) == 0) //schreibrecht existiertIn boost::fs hab Ich gerade auf die schnelle keine Funktion hierfür entdeckt.
Edit: Kleiner Tippfehler im Code.
-
WARUM muss das denn vorher geprüft werden?
-
sinn? schrieb:
WARUM muss das denn vorher geprüft werden?
Hallo,
Ich will ich nicht ein Stream erzeugen, daten schreiben und dann erst per .fail() prüfen ob ein Fehler aufgetreten ist, für mich ist das ineffizient.
Und warum ich etwas möchte ist ja nicht die frage

@Konrad: Vielen Dank! Geht prima!
(Ich schreibe mal in die Boost Mailingliste ;))
-
Wenn man eine schreibgeschützte Datei zum Schreiben öffnen will sollte das doch schon fehlschlagen. Tut es das nicht? Muss man wirklich erst versuchen was zu schreiben bevor man nen Fehler bekommt?
-
sinn? schrieb:
Wenn man eine schreibgeschützte Datei zum Schreiben öffnen will sollte das doch schon fehlschlagen. Tut es das nicht? Muss man wirklich erst versuchen was zu schreiben bevor man nen Fehler bekommt?
Hallo,
also bei mir schlägt das nicht fehl, erst wenn ich nach dem schreiben mit
if (outfile.fail()) { cerr << "Error: Can't write file!" << endl; return 0; }kommt bei mir dieser Error

-
stimmt du hast wirklich recht.

nächstes mal teste ich bevor ich denke
-
sinn? schrieb:
stimmt du hast wirklich recht.

nächstes mal teste ich bevor ich denke
Hallo,
kein Problem
Freut mich das sogar ich mal helfen konnte 