如何在C#中比较(目录)路径?
如果我有两个DirectoryInfo
对象,如何比较它们的语义相等性?例如,以下路径应全部视为等于C:\temp
:
C:\temp
C:\temp\
C:\temp\.
C:\temp\x\..\..\temp\.
以下内容可能等于也可能不等于C:\temp
:
\temp
如果当前工作目录在驱动器上C:\
temp
如果当前工作目录是C:\
C:\temp.
C:\temp...\
如果考虑当前的工作目录很重要,那么我可以自己弄清楚,所以这并不重要。尾随的点在窗口中被剥离,因此这些路径确实应该相等-
但它们在unix中不被剥离,因此在mono下,我期望其他结果。
区分大小写是可选的。这些路径可能存在或不存在,并且用户可能具有该路径的权限-我更喜欢一种快速健壮的方法,该方法不需要任何I /
O(因此无需权限检查),但是如果有内置的东西-我也会对“足够好”的东西感到满意…
回答:
从这个答案中,该方法可以处理一些边缘情况:
public static string NormalizePath(string path){
return Path.GetFullPath(new Uri(path).LocalPath)
.TrimEnd(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar)
.ToUpperInvariant();
}
原始答案中有更多详细信息。像这样称呼它:
bool pathsEqual = NormalizePath(path1) == NormalizePath(path2);
应该同时适用于文件和目录路径。
以上是 如何在C#中比较(目录)路径? 的全部内容, 来源链接: utcz.com/qa/415528.html