繁体   English   中英

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

[英]How to get a file full path in c# with Path.GetFullPath

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

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);

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

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

我猜您正在尝试查找文件(例如在 Windows 搜索中),对吗?

我会研究这个问题- 你会找到所有文件名中包含该字符串的文件,然后你可以返回完整的文件路径。

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM