[英]How to get a file full path in c# with Path.GetFullPath
我试图仅通过文件名获取文件的完整路径。 我曾尝试使用:
string fullPath = Path.GetFullPath("excelTest");
但它返回给我一个不正确的路径(与我的项目路径有关)。
我在这里的某个地方读到了一条评论,上面写着要执行以下操作:
var dir = Environment.SpecialFolder.ProgramFilesX86;
var path = Path.Combine(dir.ToString(), "excelTest.csv");
但我不知道文件保存在哪里,因此我不知道它的环境。
有人可以帮助我如何仅通过文件名获取文件的完整路径吗?
第一个片段(使用Path.GetFullPath
)正是您想要的。 因为程序 EXE 文件位于 project\\Bin\\Debug 路径中,因此它是“当前目录”,所以它返回一些与您的项目路径有关的内容。
如果要搜索驱动器上的文件,可以使用Directory.GetFiles
,它将在给定名称模式的目录中递归搜索文件。
这将递归返回所有 xml 文件:
var allFiles = Directory.GetFiles(path, "*.xml", SearchOption.AllDirectories);
您正在寻找的是Directory.GetFiles()
,您可以在此处阅读。 它的要点是,您将传入文件路径和文件名,然后您将获得一个字符串数组。 在这种情况下,您可以假设最高级别为C:\\
。 需要注意的是,如果没有找到,字符串数组将为空。
我猜您正在尝试查找文件(例如在 Windows 搜索中),对吗?
我会研究这个问题- 你会找到所有文件名中包含该字符串的文件,然后你可以返回完整的文件路径。
var fileList = new DirectoryInfo(@"c:\").GetFiles("*excelTest*", SearchOption.AllDirectories);
然后只需使用 foreach 来进行操作,例如
foreach(string file in fileList)
{
// MessageBox.Show(file);
}
您已将相对文件名传递给 Path.GetFullPath。 微软文档指出:
如果 path 是相对路径,则 GetFullPath 返回一个完全限定的路径,该路径可以基于当前驱动器和当前目录。 当前驱动器和当前目录可以在应用程序执行时随时更改。 因此,无法提前确定此重载返回的路径。
除非每次调用该函数时当前目录都相同,否则无法从相对路径获得相同的完整路径名。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.