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

时间:2016-08-01 15:06:05

标签: c# path

我试图仅通过名称获取完整路径文件。 我试过用:

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

但它返回了一条不正确的路径(我的项目路径)。

我在这里读到了一条评论,说要做以下事情:

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

但我不知道文件的保存位置,因此我不知道它的环境。

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

4 个答案:

答案 0 :(得分:1)

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

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

  

以递归方式返回所有xml文件:

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

我猜你正试图找到文件(比如在windows搜索中),对吧?

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

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

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

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

答案 3 :(得分:0)

您已将一个相对文件名传递给Path.GetFullPath。 Microsoft文档指出:

如果path是相对路径,则GetFullPath返回可以基于当前驱动器和当前目录的标准路径。当应用程序执行时,当前驱动器和当前目录可以随时更改。结果,无法提前确定此重载返回的路径。

除非每次调用该函数时当前目录都相同,否则您不能从相对路径中获得相同的完整路径名。