What is the simplest way to get the directory that a file is in? I'm using this to set a working directory.
string filename = @"C:\MyDirectory\MyFile.bat";
In this example, I should get "C:\MyDirectory".
If you've definitely got an absolute path, use Path.GetDirectoryName(path).
If you might only get a relative name, use new FileInfo(path).Directory.FullName.
Note that Path and FileInfo are both found in the namespace System.IO.
If you are working with a FileInfo object, then there is an easy way to extract a string representation of the directory's full path via the DirectoryName property.
Description of the FileInfo.DirectoryName Property via MSDN:
Gets a string representing the directory's full path.
Sample usage:
string filename = @"C:\MyDirectory\MyFile.bat";
FileInfo fileInfo = new FileInfo(filename);
string directoryFullPath = fileInfo.DirectoryName; // contains "C:\MyDirectory"
Link to the MSDN documentation.
You can use Path.GetFullPath for most of the case.
But if you want to get the path also in the case of the file name is relatively located then you can use the below generic method:
string GetPath(string filePath)
{
return Path.GetDirectoryName(Path.GetFullPath(filePath))
}
For example:
GetPath("C:\Temp\Filename.txt") return "C:\Temp\"
GetPath("Filename.txt") return current working directory like "C:\Temp\"
@"C:\MyDirectory\MyFile.bat"- Edgar