如何确保我可以在.NET中唯一地标识目录路径

本文关键字:唯一 标识 路径 NET 何确保 确保 我可以 | 更新日期: 2023-09-27 18:00:25

我刚刚在我的应用程序中发现了一个错误,其中Path.GetFullPath()对于同一路径的不同表示不能完全返回相同的结果。在这种情况下,../include../include/正在返回c:''...''include&CCD_ 5;由于我为目录名称维护了一个Dictionary<string,...>,这就破坏了一切。

如何解决这一问题,理想情况下不需要对字符串进行糟糕的笨拙检查,而是使用框架方法?

如何确保我可以在.NET中唯一地标识目录路径

../include可能指向目录文件(文件不必有扩展名),而../include/由于尾部斜杠而始终是目录。所以他们肯定不一样。

如果确定输入始终是目录(Path.GetFullPath()无法确定),则可以执行:

path = Path.Combine(input, Path.DirectorySeparatorChar.ToString());

这样,所有输入都将被视为目录,而不是文件,并且Path.GetFullPath()将为两种变体返回相同的结果。

如果合理,请执行.TrimEnd('''')。

它们不应该返回相同的结果。如果您需要检查路径实际上是一个文件还是一个目录,您可以使用不带尾部斜杠的Path.GetFullPath("../include")。如果路径是用程序提供的,则执行string.TrimEnd(''''),然后使用检查路径是否为文件或目录

File.Exists()和Directory.Exists()来确定指定的路径是文件还是目录。

您需要确保所有的表插入和搜索都是通过插入/比较非尾部斜杠路径来完成的。