如果我有两个DirectoryInfo
个对象,如何比较它们的语义平等性?例如,以下路径均应视为等于C:\temp
:
C:\temp
C:\temp\
-
C:\temp\.
个 C:\temp\x\..\..\temp\.
以下各项可能等于或不等于C:\temp
:
-
\temp
如果当前工作目录位于驱动器C:\
上 - 如果当前工作目录为
C:\
,则为temp
-
C:\temp.
个 C:\temp...\
如果考虑当前工作目录很重要,我可以自己弄清楚,所以这并不重要.在windows中,尾部的圆点会被剥离,所以这些路径应该是相等的--但在unix中它们不会被剥离,所以在mono下,我会期待其他的结果.
区分大小写是可选的.路径may or may not exist和用户may or may not have permissions to the path-我更喜欢不需要任何I/O(所以不需要权限判断)的快速健壮的方法,但是如果有内置的东西,我也会对任何"足够好"的东西感到满意……
我意识到,如果没有I/O,就不可能确定某个中间存储层是否恰好将相同的存储映射到了相同的文件(即使有I/O,当事情变得足够混乱时,也很可能是不可能的).然而,应该至少可以肯定地标识等价的路径,而不考虑底层文件系统,即必须解析到给定类型的所有可能的文件系统上的相同文件(如果存在)的路径.这有时很有用的原因是(A)因为我肯定希望在执行I/O之前首先判断这一点,(B)I/O有时会触发有问题的副作用,(C)各种其他软件组件有时会 destruct 所提供的路径,能够以对等效路径的最常见转换不敏感的方式进行比较是有帮助的,最后(D)为了准备部署,事先执行一些健全性判断是有用的,但这些判断发生在要部署的系统甚至可以访问之前.