如何使用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
)正是您想要的。它会返回项目路径中的某些内容,因为程序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将返回一个完全限定的路径,该路径可以基于当前驱动器和当前目录。当前驱动器和当前目录可以在应用程序执行时随时更改。因此,无法预先确定由该过载返回的路径。
除非每次调用函数时当前目录相同,否则无法从相对路径获得相同的完整路径名。