我目前正在编写一个编译器,我有一个小类,它遍历输入文件,并对它们进行比较,看看是否有重复的文件。当然,我们不能直接比较字符串,因为同一个文件可以写成,比如说,main.c和./main.c。因此,我使用System.IO.Path.GetFullPath()来比较文件路径。问题是在Windows上,文件系统是不区分大小写的,例如,"C:/main.c" == "C:/Main.c",但在*NIX系统上,如Linux、Mac或Android,这两个文件可能是不同的。此外,*NIX还支持像FAT和FAT32这样的文件系统,它们的工作方式与Windows的文件系统类似。我如何知道何时应该比较两个路径是否区分大小写,这样我才能确定两个文件路径是否相等?
发布于 2019-07-13 22:36:50
您可以调用Shell API函数SHParseDisplayName,然后在SHGetDesktopFolder返回的IShellFolder接口上调用CompareIDs方法。
如果你可以放弃对XP的支持,你可以使用微软的Windows-API-Code-Pack。Microsoft.WindowsAPICodePack.Shell.ShellObject.Equals会做比较。
https://stackoverflow.com/questions/57019845
复制相似问题