比较C#中的两个路径。什么时候使用区分大小写?

时间:2019-07-13 14:01:12

标签: c# .net file filesystems filepath

我当前正在编写一个编译器,我有一个小类,它遍历输入文件并对其进行比较,以查看是否没有重复的文件。当然,我们不能直接比较字符串,因为可以像写main.c./main.c这样写同一文件。因此,我正在使用System.IO.Path.GetFullPath()来比较文件路径。问题是,在Windows上,文件系统不区分大小写,例如"C:/main.c" == "C:/Main.c",但是在* NIX系统(例如Linux,Mac或Android)上,这两个文件可能是不同的文件。此外,* NIX还支持类似于Windows的文件系统,例如FAT和FAT32。我怎么知道什么时候应该比较两个路径是否区分大小写,以便可以确定两个文件路径是否相等?

1 个答案:

答案 0 :(得分:0)

您可以调用Shell API函数SHParseDisplayName,然后在SHGetDesktopFolder返回的IShellFolder接口上调用CompareIDs方法。

如果可以放弃XP支持,则可以使用Microsoft的Windows-API-Code-Pack。 Microsoft.WindowsAPICodePack.Shell.ShellObject.Equals将进行比较。