2010-10-11 5 views
7

Wenn ich einen Dateipfad wie "C: \ Eigene Dateien \ Bilder \ Image1.png" habe, wie kann ich den übergeordneten Ordnernamen der Datei "Image1.png" erhalten? In diesem Fall "Bilder", aber das ist nur ein Beispiel. Ich habe durch System.IO.Path geschaut und da scheint nichts zu sein. Vielleicht übersehe ich es, aber ich habe keine Ahnung, wo es sein würde.Abrufen von Ordnername (n) aus Pfad

Antwort

9

So:

Path.GetFileName(Path.GetDirectoryName(something)) 
+0

Snazzy, wusste ich nicht, dass Sie das Problem wie folgt angehen könnte . +1 – AndyPerfect

+0

Großartig, das ist die einfachste. Danke! – Stan

2

Versuchen Sie folgendes:

var directoryFullPath = Path.GetDirectoryName(@"C:\My Documents\Images\Image1.png"); 
var directoryName = Path.GetFileName(directoryFullPath); \\ Images 
4

Verwendung System.IO.FileInfo.

string fl = "C:\My Documents\Images\Image1.png"; 
System.IO.FileInfo fi = new System.IO.FileInfo(fl); 
string owningDirectory = fi.Directory.Name; 
+0

Diese Eigenschaft gibt den vollständigen Pfad zum Verzeichnis zurück, was nicht seinen Vorstellungen entspricht. – SLaks

+0

Vielen Dank, dass Sie darauf hingewiesen haben - aktualisiert. FileInfo.Directory.Name gibt das gewünschte Ergebnis zurück. – code4life

1

Die folgende Methode Namen alle Verzeichnisnamen und Datei extrahieren

Dim path As String = "C:\My Documents\Images\Image1.png" 
Dim list As String() = path.Split("\") 
Console.WriteLine(list.ElementAt(list.Count - 2)) 
+0

Dies ist unnötig langsam. – SLaks

+0

Nun, der Titel deutet auf die Möglichkeit, mehrere Ordnernamen zu bekommen - war nicht sicher, ob der Fragesteller mehr als nur das eine Elternverzeichnis haben wollte, also warum nicht? – AndyPerfect

+0

Sie sollten auch auf das alternative Pfadtrennzeichen aufteilen (/ für Windows) – Joe

4

Erstellen Sie eine Instanz von

System.IO.FileInfo f1 = new FileInfo("filepath"); 
        DirectoryInfo dir=f1.Directory; 
        string dirName = dir.Name; 
        string fullDirPath = dir.FullName;