如果您确定有绝对路径,请使用 Path.GetDirectoryName(path)
。
如果您可能只获得一个相对名称,请使用 new FileInfo(path).Directory.FullName
。
请注意,Path
和 FileInfo
都在命名空间 System.IO
中。
System.IO.Path.GetDirectoryName(filename)
Path.GetDirectoryName(filename);
您可以使用 System.IO.Path.GetDirectoryName(fileName)
,或使用 FileInfo.Directory
将路径转换为 FileInfo
。
如果您正在使用路径做其他事情,FileInfo
类可能有优势。
如果您使用的是 FileInfo
对象,那么有一种简单的方法可以通过 DirectoryName
属性提取目录完整路径的 string
表示。
通过 MSDN 对 FileInfo.DirectoryName
属性的描述:
获取表示目录完整路径的字符串。
示例用法:
string filename = @"C:\MyDirectory\MyFile.bat";
FileInfo fileInfo = new FileInfo(filename);
string directoryFullPath = fileInfo.DirectoryName; // contains "C:\MyDirectory"
链接到 MSDN documentation。
您可以使用以下方法获取当前的应用程序路径:
string AssemblyPath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location).ToString();
首先,您必须使用 System.IO 命名空间。然后;
string filename = @"C:\MyDirectory\MyFile.bat";
string newPath = Path.GetFullPath(fileName);
或者
string newPath = Path.GetFullPath(openFileDialog1.FileName));
在大多数情况下,您可以使用 Path.GetFullPath
。但是如果你想在文件名相对定位的情况下也获取路径,那么你可以使用下面的通用方法:
string GetPath(string filePath)
{
return Path.GetDirectoryName(Path.GetFullPath(filePath))
}
例如:
GetPath("C:\Temp\Filename.txt")
返回 "C:\Temp\"
GetPath("Filename.txt")
返回 current working directory
喜欢 "C:\Temp\"
就我而言,我需要找到(目录的)完整路径的目录名称,所以我只是做了:
var dirName = path.Split('\\').Last();
"C:\MyDirectory"
而不是 MyDirectory
。使用字符串操作方法的建议是有风险的,有很多陷阱,而不是使用专用的 Path
方法。
不定期副业成功案例分享
new FileInfo(path).Directory.FullName
应该适用于任何一种情况。