如何使用 C# 获取给定路径的完整路径(可以是目录或文件,甚至是完整路径)?

Posted

技术标签:

【中文标题】如何使用 C# 获取给定路径的完整路径(可以是目录或文件,甚至是完整路径)?【英文标题】:How can I get a full path of a given path (can be a directory or file, or even full path) using C#? 【发布时间】:2011-10-25 08:59:41 【问题描述】:

我得到的最接近的是使用new FileInfo(path).FullPath,但据我所知 FileInfo 仅用于文件,而不是目录。

有关上下文,另请参阅我的 cmets 至 Jon Skeet's answer here。

【问题讨论】:

添加一些例子。不清楚你想要什么。 确实上下文可能证明我的答案不是你要找的 @@LouisRhys - 你的问题到底是什么?链接的问题没有告诉我您在寻找什么。您应该使用 FileSystemInfo 并确定它是文件还是目录。您一直试图在提供的答案中找出错误而不解释原因。 【参考方案1】:

Path 类还为您提供了许多不错的方法和属性,例如获取全路径()。详情请见MSDN。

【讨论】:

【参考方案2】:

Path.GetFullPath()

【讨论】:

【参考方案3】:

我认为是-

DirectoryInfo.FullName

【讨论】:

如果是文件而不是目录怎么办?【参考方案4】:

试试这个:

String strYourFullPath = "";
IO.Path.GetDirectoryName(strYourFullPath)

【讨论】:

它不返回完整路径 确实如此。当 strYourFullPath 是一个文件时,它返回文件所在的目录,当它的 strYourFullPath 是一个目录时,它保持不变。如果这不是您想要的,那么您想要达到什么目的?【参考方案5】:

使用扩展FileSystemInfoDirectoryInfo 类,将为文件或目录提供正确的结果。

        string path = @"c:\somefileOrDirectory";
        var directoryInfo = new DirectoryInfo(path);
        var fullPath = directoryInfo.FullName;

【讨论】:

【参考方案6】:

使用DirectoryInfo 类作为目录路径。与 FileInfo 的工作原理大致相同。

请注意,路径的属性称为 FullName。

DirectoryInfo di = new DirectoryInfo(@"C:\Foo\Bar\");
string path = di.FullName;

如果要判断路径是文件还是目录,可以使用Path类的静态方法:

string path1 = @"C:\Foo\Bar.docx";
string path2 = @"C:\Foo\";

bool output1 = Path.HasExtension(path1); //Returns true
bool output2 = Path.HasExtension(path2); //Returns false

但是,路径也可能包含类似于扩展的内容,因此您可能希望将其与其他一些检查结合使用,例如bool isFile = File.Exists(path);

【讨论】:

如果是文件而不是目录怎么办? 您确实需要区分何时需要目录路径或何时需要文件路径。据我所知,没有通用的“路径”类来表示文件或目录。【参考方案7】:

根据msdn,FileSystemInfo.FullName获取目录或文件的完整路径,can be applied获取FileInfo

FileInfo fi1 = new FileInfo(@"C:\someFile.txt");
Debug.WriteLine(fi1.FullName); // Will produce C:\someFile.txt
FileInfo fi2 = new FileInfo(@"C:\SomeDirectory\");
Debug.WriteLine(fi2.FullName); // Will produce C:\SomeDirectory\

【讨论】:

FileSystemInfo 是一个抽象类,我不能做 new FileSystemInfo(path).FullPath @LouisRhys:你试过FileInfo(path).FullName吗? @LouisRhys - 为什么你需要一个 FileSystemInfo 变量? FullPathFullName 返回一个 Stringnew FileSystemInfo(path).FullPath 没有意义【参考方案8】:

您可以使用file.getdirectory 来完成这项工作。

【讨论】:

以上是关于如何使用 C# 获取给定路径的完整路径(可以是目录或文件,甚至是完整路径)?的主要内容,如果未能解决你的问题,请参考以下文章

获取Golang中给定文件路径的目录名称(不是路径)

C#怎样获取项目的debug路径

如何从 C# 中的单个完整路径创建多个目录?

使用 Swift 获取最后一个目录中的文件名和完整目录路径

给定应用程序的完整路径或 NSBundle 实例,如何获取其图标?

C# 获取当前,相对,绝对路径