2016-09-20 2 views
1

C: ist das Startlaufwerk meines PCs.Aufruf von GetParent() auf dem Stammlaufwerk

DirectoryInfo dirInfo; 
dirInfo = System.IO.Directory.GetParent(@"C:"); // Case 1 
dirInfo = System.IO.Directory.GetParent(@"C:\"); // Case 2 

Fall 1:

dirInfo nicht null ist und dirInfo.FullPath wird auf "C: \ Program Files (x86) \ Microsoft Visual Studio 14.0 \ Common7" auf meinem Rechner

Fall 2:

dirInfo ist null

Von Directory.GetParent Method:

null, wenn der Verzeichnispfad Wurzel

"C:" nicht als Wurzel behandelt. Warum nicht?

+0

Weil es überhaupt kein Ordner ist? Obwohl ich eine Ausnahme von dieser –

+0

erwarten würde Seit den Tagen von MS-DOS bedeutet 'CD C:' das Verzeichnis zu ändern, was das aktuelle Verzeichnis auf Laufwerk C: ist. –

+0

Für DOS vielleicht. Bei Befehlen, die Pfade oder Volumes erwarten, gilt dies. 'GetParent' erwartet jedoch einen Pfad und gibt einen absoluten Pfad zurück. 'C:' ist kein gültiger path-rooted Pfad, also wird er als relativer Pfad behandelt, genauso wie 'Directory.GetParent (" c ")' oder 'Directory.GetParent (" a ")'. In allen diesen Fällen ist das übergeordnete Verzeichnis das aktuelle Verzeichnis –

Antwort

2

Directory.GetParent ist nur eine Zeichenfolgenmanipulationsfunktion, die einen absoluten oder relativen lokalen Pfad oder eine UNC verwendet und eine absolute Zeichenfolge zurückgibt. Wenn der Pfad relativ ist, wird das aktuelle Arbeitsverzeichnis verwendet. Wie die Dokumentation erklärt:

Die von dieser Methode zurückgegebene Zeichenfolge besteht aus allen Zeichen im Pfad bis einschließlich, aber nicht einschließlich der letzten DirectorySeparatorChar oder AltDirectorySeparatorChar.

Dies bedeutet, dass die Methode C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\c zurückgegeben wird, wenn Sie c\ übergeben haben.

C: ist ein Volumenbrief, kein Pfad. Da C: nicht als absoluter Pfad oder UNC-Pfad erkannt wird, wird es als relativer Pfad behandelt, genau wie c, a oder nosuchfolder. In beiden Fällen ist der Rückgabewert das aktuelle Arbeitsverzeichnis. Beim Debuggen mit Visual Studio ist das Arbeitsverzeichnis das Verzeichnis von Visual Studio.

Verwandte Themen