如何从文件的完整路径中获取目录?
Posted
技术标签:
【中文标题】如何从文件的完整路径中获取目录?【英文标题】:How do I get the directory from a file's full path? 【发布时间】:2010-10-15 00:57:31 【问题描述】:获取文件所在目录的最简单方法是什么?我正在使用它来设置工作目录。
string filename = @"C:\MyDirectory\MyFile.bat";
在这个例子中,我应该得到“C:\MyDirectory”。
【问题讨论】:
不应该是字符串文字吗?@"C:\MyDirectory\MyFile.bat"
有人想保护这个有权这样做的问题吗? 11 个与 2017 年最后一个类似的答案..
【参考方案1】:
如果您确定有绝对路径,请使用Path.GetDirectoryName(path)
。
如果您只能获得相对名称,请使用 new FileInfo(path).Directory.FullName
。
请注意,Path
和 FileInfo
都位于命名空间 System.IO
。
【讨论】:
确实如此,但是有没有一种叫做GetDirectory 的方法?不是 GetDirectoryName 吗? 你可以只使用 DirectoryName 而不是 Directory.FullPath 可以吗? 我在校对接收相对名称。我没有发现路径将是绝对的。我现在有两个版本:) 无论我们拥有何种路径类型,是否有一个单一的解决方案有效?也就是说,无论是相对路径还是绝对路径。 @UlyssesAlves:我相信new FileInfo(path).Directory.FullName
应该适用于任何一种情况。【参考方案2】:
System.IO.Path.GetDirectoryName(filename)
【讨论】:
【参考方案3】:Path.GetDirectoryName(filename);
【讨论】:
【参考方案4】:您可以使用System.IO.Path.GetDirectoryName(fileName)
,或使用FileInfo.Directory
将路径转换为FileInfo
。
如果你用路径做其他事情,FileInfo
类可能有优势。
【讨论】:
Path类中没有'GetDirectory方法;你一定是指'GetDirectoryName【参考方案5】:您可以使用Path.GetDirectoryName
并传入文件名。
MSDN Link
【讨论】:
【参考方案6】:如果您正在使用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。
【讨论】:
【参考方案7】:您可以使用以下方式获取当前的应用程序路径:
string AssemblyPath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location).ToString();
【讨论】:
【参考方案8】:首先,您必须使用 System.IO 命名空间。然后;
string filename = @"C:\MyDirectory\MyFile.bat";
string newPath = Path.GetFullPath(fileName);
或
string newPath = Path.GetFullPath(openFileDialog1.FileName));
【讨论】:
【参考方案9】:在大多数情况下,您可以使用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\"
【讨论】:
【参考方案10】:就我而言,我需要找到(目录的)完整路径的目录名称,所以我只是这样做了:
var dirName = path.Split('\\').Last();
【讨论】:
OP 需要"C:\MyDirectory"
而不是MyDirectory
。使用字符串操作方法的建议是有风险的,有很多陷阱,而是使用专用的Path
方法。以上是关于如何从文件的完整路径中获取目录?的主要内容,如果未能解决你的问题,请参考以下文章