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

获取文件所在目录的最简单方法是什么?我用它来设置一个工作目录。

string filename = @"C:\MyDirectory\MyFile.bat";

在这个例子中,我应该得到“C:\MyDirectory”。

669624 次浏览

如果您确实有一个绝对路径,请使用Path.GetDirectoryName(path)

如果您可能只获得一个相对名称,请使用new FileInfo(path).Directory.FullName

注意,PathFileInfo都在名称空间System.IO中找到。

Path.GetDirectoryName(filename);

你可以使用Path.GetDirectoryName并直接传入文件名。

MSDN Link

System.IO.Path.GetDirectoryName(filename)

您可以使用System.IO.Path.GetDirectoryName(fileName),或者使用FileInfo.Directory将路径转换为FileInfo

如果要对路径进行其他操作,则FileInfo类可能具有优势。

如果您正在使用FileInfo对象,那么可以通过DirectoryName属性提取目录完整路径的string表示。

FileInfo.DirectoryName属性通过MSDN的描述:

获取表示目录的完整路径的字符串。

示例用法:

string filename = @"C:\MyDirectory\MyFile.bat";
FileInfo fileInfo = new FileInfo(filename);
string directoryFullPath = fileInfo.DirectoryName; // contains "C:\MyDirectory"

链接到MSDN文档

首先,你必须使用系统。IO命名空间。然后;

string filename = @"C:\MyDirectory\MyFile.bat";
string newPath = Path.GetFullPath(fileName);

string newPath = Path.GetFullPath(openFileDialog1.FileName));

您可以使用以下命令获取当前应用程序路径:

string AssemblyPath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location).ToString();
你可以在大多数情况下使用Path.GetFullPath。 但是如果你想在文件名相对位置的情况下获得路径,那么你可以使用下面的泛型方法:

string GetPath(string filePath)
{
return Path.GetDirectoryName(Path.GetFullPath(filePath))
}

例如:

返回"C:\Temp\"

"C:\Temp\"一样返回current working directory

在我的情况下,我需要找到一个完整路径(目录)的目录名,所以我简单地做:

var dirName = path.Split('\\').Last();