【问题标题】:How to get a file full path in c# with Path.GetFullPath如何在 C# 中使用 Path.GetFullPath 获取文件完整路径
【发布时间】:2016-12-06 17:36:31
【问题描述】:

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

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

但它返回给我的路径不正确(与我的项目路径有关)。

我在这里某处读到了一条评论,上面写着要执行以下操作:

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

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

有人可以帮助我如何仅通过文件名获取文件的完整路径吗?

【问题讨论】:

  • 好吧,如果你不知道文件在哪里,API应该怎么知道呢?您是否正在寻找一种算法来递归搜索磁盘上的文件?
  • 如果您的系统上有两个同名文件,您希望发生什么?您描述的 GetFullPath() 在项目路径中返回文件路径的问题是一个很好的例子,它在本地找到了一些东西并且对此感到满意。

标签: c# path


【解决方案1】:

第一个 sn-p(带有Path.GetFullPath)完全符合您的要求。它会返回带有您的项目路径的内容,因为程序 EXE 文件位于 project\Bin\Debug 路径中​​,因此是“当前目录”。

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

这会递归返回所有 xml 文件:

var allFiles = Directory.GetFiles(path, "*.xml", SearchOption.AllDirectories);

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

【讨论】:

    【解决方案2】:

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

    我会查看this question - 您会发现所有文件名中包含该字符串的文件,然后您可以从那里返回完整的文件路径。

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

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

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

    【讨论】:

      【解决方案3】:

      您正在寻找的是Directory.GetFiles(),您可以阅读它here。它的要点是,你将传入文件路径和文件名,然后你会得到一个字符串数组。在这种情况下,您可以使用C:\ 假设顶级。需要注意的是,如果没有找到,则字符串数组将为空。

      【讨论】:

        【解决方案4】:

        您已将相对文件名传递给 Path.GetFullPath。微软文档指出:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-03-31
          • 2015-11-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-04-11
          相关资源
          最近更新 更多