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".
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 definitely have an absolute path, use Path.GetDirectoryName(path)
.
If you might only have a relative name, use new FileInfo(path).Directory.FullName
.
Note that Path
and FileInfo
are both found in the namespace System.IO
.
new FileInfo(path).Directory.FullName
should work in either case. –
Focal System.IO.Path.GetDirectoryName(filename)
You can use System.IO.Path.GetDirectoryName(fileName)
, or turn the path into a FileInfo
using FileInfo.Directory
.
If you're doing other things with the path, the FileInfo
class may have advantages.
You can use Path.GetDirectoryName
and just pass in the filename.
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 get the current Application Path using:
string AssemblyPath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location).ToString();
First, you have to use System.IO namespace. Then;
string filename = @"C:\MyDirectory\MyFile.bat";
string newPath = Path.GetFullPath(fileName);
or
string newPath = Path.GetFullPath(openFileDialog1.FileName));
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\"
In my case, I needed to find the directory name of a full path (of a directory) so I simply did:
var dirName = path.Split('\\').Last();
"C:\MyDirectory"
and not MyDirectory
. The advice to use string manipulation methods is risky, there are many traps, rather use dedicated Path
methods. –
Stotinka © 2022 - 2024 — McMap. All rights reserved.
@"C:\MyDirectory\MyFile.bat"
– Mcquiston