3 Stimmen

Wie man feststellt, ob eine Datei mit C++ geschrieben werden kann

Wie kann ich in C++ feststellen, ob das Programm entweder nur Lese- oder Schreibzugriff auf eine Datei hat? Ich habe die boost-Dateisystembibliothek durchsucht, aber ich habe noch nichts gefunden, was mir helfen könnte. Im Moment denke ich daran, die Datei zu öffnen, zu versuchen, darin zu schreiben und auf Fehler zu prüfen, aber das scheint mir kein sehr geeigneter Weg zu sein, dies zu tun.

Haben Sie einen Hinweis?

EDIT: Es müsste plattformübergreifend sein

5voto

wallyk Punkte 55322

Der Systemaufruf, der von den meisten Laufzeitbibliotheken vollständig unterstützt wird, lautet

#include <unistd.h>

if (0 == access (char *pathname, int mode))
    // permission is granted

wobei Modus es F_OK um das Vorhandensein der Datei zu prüfen, oder eine Maske, die aus dem bitweisen ODER einer oder mehrerer der folgenden Angaben besteht R_OK , W_OK y X_OK .

5voto

Letztendlich kann man auf einem modernen Betriebssystem nur testen, ob man Daten in eine Datei schreiben kann, indem man es tatsächlich versucht. In der Zeit zwischen der Prüfung der Berechtigung und dem tatsächlichen Schreibvorgang können viele Dinge mit der Datei passiert sein.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X