获取文件所在目录的最简单方法是什么?我正在使用它来设置工作目录。
string filename = @"C:\MyDirectory\MyFile.bat";
在这个例子中,我应该得到“C:\ MyDirectory”。
答案 0 :(得分:750)
如果您确实有绝对路径,请使用Path.GetDirectoryName(path)
。
如果您只能获得相对名称,请使用new FileInfo(path).Directory.FullName
。
请注意,Path
和FileInfo
都位于命名空间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
并传入文件名。
答案 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"
答案 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