如何从文件的完整路径中获取目录?

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

请注意,PathFileInfo 都位于命名空间 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 方法。

以上是关于如何从文件的完整路径中获取目录?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用c#从google驱动器api获取文件夹的完整路径

如何使用 C# 获取给定路径的完整路径(可以是目录或文件,甚至是完整路径)?

如何使用 JavaScript 从完整路径中获取文件名?

如何使用Javascript从文件上传中获取完整路径

如何从文件系统中获取已删除文件夹的完整路径

从完整文件路径获取文件夹名称