tags:

views:

85

answers:

6

If I have a file path like "C:\My Documents\Images\Image1.png", how can I get the parent folder name of the "Image1.png" file? In this case, "Images", but that's just a sample. I've looked through System.IO.Path and there doesn't seem to be anything there. Maybe I'm overlooking it, but I have no idea where it would be.

+4  A: 

Like this:

Path.GetFileName(Path.GetDirectoryName(something))
SLaks
Snazzy, I didn't know you could tackle the problem like this. +1
AndyPerfect
Great, this is the most straightforward. Thanx!
WinnerWinnerChickenDinner
+1  A: 

Have a look at this answer; C# How do I extract each folder name from a path? and then just go for the last element in the array.

Dave Anderson
This is unnecessarily slow.
SLaks
+2  A: 

Try this:

var directoryFullPath = Path.GetDirectoryName(@"C:\My Documents\Images\Image1.png");
var directoryName = Path.GetFileName(directoryFullPath);  \\ Images
Leniel Macaferi
+2  A: 

Use 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;
code4life
This property returns the full path to the directory, which is not what he wants.
SLaks
Thanks for pointing that out - updated. FileInfo.Directory.Name will return the desired result.
code4life
+1  A: 

The following method will extract all the directory names and file name

Dim path As String = "C:\My Documents\Images\Image1.png"
Dim list As String() = path.Split("\")
Console.WriteLine(list.ElementAt(list.Count - 2))
AndyPerfect
This is unnecessarily slow.
SLaks
well, the title hints at the possibility of getting multiple folder names - wasn't sure if the asker may have wanted more than just the one parent directory, so why not?
AndyPerfect
You should also split on the alternate path separator (/ for Windows)
Joe
+3  A: 

Create an instance of

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