【发布时间】:2011-11-12 18:49:56
【问题描述】:
在 .Net 中比较两个路径以确定它们是否指向同一个文件或目录的最佳方法是什么?
-
如何验证这些是否相同:
c:\Some Dir\SOME FILE.XXX C:\\\SOME DIR\some file.xxx -
更好的是:有没有办法验证这些路径指向某个网络驱动器上的同一个文件:
h:\Some File.xxx \\Some Host\Some Share\Some File.xxx
更新:
Kent Boogaart 正确回答了我的第一个问题;但我仍然很想知道我的第二个问题是否有解决方案,即比较网络驱动器上文件和目录的路径。
更新 2(我的两个问题的综合答案):
问题 1:本地和/或网络文件和目录
c:\Some Dir\SOME FILE.XXX
C:\\\SOME DIR\some file.xxx
答案:使用System.IO.Path.GetFullPath,例如:
var path1 = Path.GetFullPath(@"c:\Some Dir\SOME FILE.XXX");
var path2 = Path.GetFullPath(@"C:\\\SOME DIR\subdir\..\some file.xxx");
// outputs true
Console.WriteLine("{0} == {1} ? {2}", path1, path2, string.Equals(path1, path2, StringComparison.OrdinalIgnoreCase));
问题 2:本地和/或网络文件和目录
答案:使用 GetPath 方法,如发布在 http://briancaos.wordpress.com/2009/03/05/get-local-path-from-unc-path/
【问题讨论】:
-
您的第二个示例开头应该只有一个而不是三个反斜杠,对吧?
-
您可以在这里找到类似的问题:stackoverflow.com/questions/2281531/…
-
.NET Core 有
Path.IsPathFullyQualified