Wie überprüft man, ob Directory bereits in MFC (VC ++) existiert?

8

Wie überprüft man, ob das Verzeichnis bereits in MFC (VC ++) existiert? Ich verwende den folgenden Code, um den aktuellen Anwendungspfad zu erhalten, und dort erstelle ich den NDSLog-Ordner so dass alle meine Logfiles dort platzieren sollten, jetzt möchte ich die Bedingung überprüfen, ob der NDSLog-Ordner bereits existiert dont create. Wie geht das?

Danke.

%Vor%     
Swapnil Gupta 26.11.2010, 04:50
quelle

6 Antworten

22

Der einfachste Weg zu prüfen, ob eine Datei / ein Verzeichnis existiert, ist GetFileAttributes :

%Vor%

Beachten Sie, dass die Funktion INVALID_FILE_ATTRIBUTES zurückgibt, auch wenn sie aus einem anderen Grund fehlschlägt, z. B. keine Berechtigungen für den Zugriff auf die Datei zu haben. Überprüfen Sie daher den Rückgabewert von CreateDirectory , um sicherzustellen, dass der Vorgang erfolgreich war.

Sie müssen eigentlich nicht prüfen, ob das Verzeichnis bereits existiert; CreateDirectory wird einen Fehlercode setzen, wenn das Verzeichnis bereits existiert:

%Vor%     
casablanca 26.11.2010, 06:11
quelle
1

Ich benutze PathFileExists.

    
House Sparrow 30.11.2010 15:55
quelle
1

Wie wäre es mit PathIsDirectory() ? Im ursprünglichen Beispiel können Sie PathRemoveFilespec() gefolgt von PathCombine() verwenden, um einen neuen Dateinamen / Erweiterung hinzuzufügen. In dem unwahrscheinlichen Fall, dass Ihr Ziel nur Windows 8 oder höher ist, gibt es sicherere PathCch...() -Gerüche dieser Funktionen.

    
UweBaemayr 05.07.2016 20:36
quelle
0

FindFirstFile . Trotz der "Datei" im Namen, wird es Verzeichnisse sehr gut finden.

    
Jerry Coffin 26.11.2010 05:23
quelle
0

Sie können _accees oder _waccess von C runtime verwenden. Dies ist die msdn-Seite und Sie können die Beispielnutzung sehen Und Sie müssen sich auch nicht darum kümmern, ob das Verzeichnis bereits existiert, weil CreateDirectory ERROR_ALREADY_EXISTS überprüft und zurückgibt, wenn es existiert. Sie können von hier aus (Rückgabecodes) sehen.

    
msh 26.11.2010 05:35
quelle
0

Ich muss beachten, dass GetFileAttributes langsam arbeitet, wenn Datei ein Netzwerkpfad ist. Eigentlich funktioniert es langsam zum ersten Mal und danach schnell.

    
Georg 14.09.2012 05:37
quelle

Tags und Links