2016-06-17 10 views
0

Ich bin verwirrt mit dem Verhalten dieses Stück Code.GetFileAttributes gibt FILE_ATTRIBUTE_DIRECTORY für ungültige Eingabe zurück

const char* file_name = "/ /"; 
auto attributes = GetFileAttributes(TEXT(file_name)); // same result without TEXT macro 
if (attributes == INVALID_FILE_ATTRIBUTES) 
{ 
    //error 
} 
else if (attributes == FILE_ATTRIBUTE_DIRECTORY) 
{ 
    //directory 
}  

Dies ist ungültig Name für eine Datei oder ein Verzeichnis, so würde ich erwarten, dass dieser INVALID_FILE_ATTRIBUTES zurückzukehren. Kompiliert mit VS2015 läuft auf win8. Vielleicht liegt das an einem Vorwärts-Zeichen? Und vielleicht gibt es eine winAPI-Funktion, um die Eingabe zu validieren?

dank

+0

Es gibt '-1' für mich zurück (Fehler). –

+0

ANSI oder Unicode? Gibt es einen Grund, warum Sie das TEXT-Makro verwenden? Sicherlich können Sie bei Unicode bleiben. –

+0

* "Dies ist ein ungültiger Name für eine Datei oder ein Verzeichnis" * - Warum? Sieht für mich wie ein vollkommen gültiger Verzeichnisname aus. – IInspectable

Antwort

4

"/ /" ist eine absolut gültige Dateinamen. Der Schrägstrich / wird als Pfadtrennzeichen interpretiert.

Aus diesem Grund basiert die logische Schlussfolgerung darauf, dass das Verzeichnis " " auf der Stammebene des aktuellen Arbeitsvolumes auf dem Computer liegt, auf dem Sie diesen Code ausführen.

+0

Mit anderen Worten, Ockhams Rasiermesser anwenden –

+0

Oh Mist, in der Tat, verpasste ich das Bit, wo Schrägstrich als Pfadtrennzeichen interpretiert wurde. (und mein anderer Test hat ein Verzeichnis mit Leerzeichen erstellt). Danke für Ihre Hilfe! – Tadzys

Verwandte Themen