如何使用 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】:使用扩展FileSystemInfo
的DirectoryInfo
类,将为文件或目录提供正确的结果。
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 变量? FullPath 或 FullName 返回一个 String。 new FileSystemInfo(path).FullPath 没有意义【参考方案8】:
您可以使用file.getdirectory 来完成这项工作。
【讨论】:
以上是关于如何使用 C# 获取给定路径的完整路径(可以是目录或文件,甚至是完整路径)?的主要内容,如果未能解决你的问题,请参考以下文章