如何使用path.GetFullPath在c#中获取文件完整路径

本文关键字:文件 获取 路径 何使用 path GetFullPath | 更新日期: 2023-09-27 17:59:46

我正试图仅通过文件名获取文件的完整路径。我尝试过使用:

string fullPath = Path.GetFullPath("excelTest");

但它给我返回了一个错误的路径(与我的项目路径有关)。

我在这里的某个地方读到了一条评论,上面写着要做以下事情:

        var dir = Environment.SpecialFolder.ProgramFilesX86;
        var path = Path.Combine(dir.ToString(), "excelTest.csv");

但我不知道文件保存在哪里,因此我不知道它的环境。

有人能帮我如何仅凭文件名获取文件的完整路径吗?

如何使用path.GetFullPath在c#中获取文件完整路径

第一个片段(带有Path.GetFullPath)正是您想要的。它会返回项目路径中的某些内容,因为程序EXE文件位于project''Bin''Debug路径中,因此该路径是"当前目录"。

如果您想在驱动器上搜索文件,可以使用Directory.GetFiles,它将在给定名称模式的目录中递归搜索文件。

这将递归地返回所有xml文件:

var allFiles = Directory.GetFiles(path, "*.xml", SearchOption.AllDirectories);
  • http://msdn.microsoft.com/en-us/library/ms143316%28v=vs.100%29.aspx
  • http://msdn.microsoft.com/en-us/library/ms143448.aspx#Y252

https://stackoverflow.com/a/9830162/2196124

我猜您正在尝试查找文件(就像在windows搜索中一样),对吧?

我会研究这个问题——你会发现所有文件的文件名中都有这个字符串,从那里你可以返回完整的文件路径。

var fileList = new DirectoryInfo(@"c:'").GetFiles("*excelTest*", SearchOption.AllDirectories);

然后只需使用foreach进行操作,例如

foreach(string file in fileList)
{
// MessageBox.Show(file);
}

您要查找的是Directory.GetFiles(),您可以在此处阅读。它的要点是,您将传入文件路径和文件名,然后返回一个字符串数组。在这种情况下,您可以假设C:'是顶级的。需要注意的是,如果什么都没有找到,字符串数组将为空。

您已将相对文件名传递给Path.GetFullPath。Microsoft文档说明:

如果路径是相对路径,GetFullPath将返回一个完全限定的路径,该路径可以基于当前驱动器和当前目录。当前驱动器和当前目录可以在应用程序执行时随时更改。因此,无法预先确定由该过载返回的路径。

除非每次调用函数时当前目录相同,否则无法从相对路径获得相同的完整路径名。