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

问题描述:

我试图通过名称获取完整路径文件。 我曾尝试使用:如何在C#中使用Path.GetFullPath获取文件完整路径

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

但它返回我一个不正确的路径(的东西与我的项目路径)。

我看了这里的某个地方评论它说做到以下几点:

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

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

有人可以帮助我如何获得文件的完整路径只有它的名字?

+2

那么,如果你不知道文件在哪里,API应该如何知道?你在寻找一个算法来在你的磁盘上递归搜索文件吗? –

+0

如果系统中有两个具有相同名称的文件,您希望发生什么?你描述的GetFullPath()在你的项目路径中返回一个文件路径的问题是一个很好的例子,它在本地找到了一些东西,并且很满意。 – LordWilmore

我想你试图找到文件(如在Windows搜索),对不对?

我想看看this question - 你会发现所有文件的文件名都是那个字符串,从那里你可以返回完整的文件路径。

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

然后只用foreach来操作,例如

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

第一个片段(与Path.GetFullPath)完全是你想要的。它会返回项目路径中的内容,因为程序EXE文件位于项目\ Bin \ Debug路径中,因此它是“当前目录”。

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

这递归返回所有XML的文件:

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

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

你在找什么是Directory.GetFiles(),你可以阅读它here。它的要点是,你会传入文件路径和文件名,并且你会得到一个字符串数组。在这种情况下,您可以假设顶级C:\。应该注意的是,如果没有找到,字符串数组将是空的。