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

时间:2009-03-23 17:49:14

标签: c# .net file file-io directory

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

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

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

14 个答案:

答案 0 :(得分:750)

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

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

请注意,PathFileInfo都位于命名空间System.IO中。

答案 1 :(得分:55)

System.IO.Path.GetDirectoryName(filename)

答案 2 :(得分:21)

Path.GetDirectoryName(filename);

答案 3 :(得分:12)

您可以使用System.IO.Path.GetDirectory(filename),或将路径转换为FileInfo,然后使用FileInfo.Directory

如果您正在使用路径执行其他操作,FileInfo可能会有优势。

答案 4 :(得分:10)

您可以使用Path.GetDirectoryName并传入文件名。

MSDN Link

答案 5 :(得分:9)

使用下面提到的代码获取文件夹路径

Path.GetDirectoryName(filename);

这将在您的案例中返回" C:\ MyDirectory"

答案 6 :(得分:5)

您可以使用以下方式获取当前的应用程序路径:

string AssemblyPath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location).ToString();

祝你好运!

答案 7 :(得分:4)

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

通过MSDN描述FileInfo.DirectoryName属性:

  

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

样本用法:

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

链接到MSDN documentation

答案 8 :(得分:2)

就我而言,我需要找到(目录的)完整路径的目录名称,所以我只需这样做:

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

答案 9 :(得分:1)

首先,您必须使用System.IO命名空间。然后;

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

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

答案 10 :(得分:0)

在大多数情况下,您可以使用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\"

答案 11 :(得分:0)

只是因为别人需要它,我用于相对路径的是:

string rootPath = "MyRootDir/MyFolder1/MyFolder2/myFile.pdf";
while (!string.IsNullOrWhiteSpace(Path.GetDirectoryName(rootPath))) 
{
    rootPath = Path.GetDirectoryName(rootPath);
} 
Console.WriteLine(rootPath); //Will print: "MyRootDir"

答案 12 :(得分:-1)

Path.GetDirectoryName(Context.Parameters [“ assemblypath”])

答案 13 :(得分:-2)

 string path= @"C:\Users\username\Desktop\FolderName"
  string Dirctory = new FileInfo(path).Name.ToString();
//output FolderName