如何在Windows中解析规范文件名?

dth*_*her 9 windows filenames

如果我有一个解析为Windows中的文件路径的字符串,是否有一种可接受的方式来获取文件名的规范形式?

例如,我想知道是否

C:\stuff\things\etc\misc\whatever.txt
Run Code Online (Sandbox Code Playgroud)

C:\stuff\things\etc\misc\other\..\whatever.txt
Run Code Online (Sandbox Code Playgroud)

实际上指向同一个文件,并在我的应用程序中存储路径的规范形式.

请注意,简单的字符串比较不起作用,也不会有任何RegEx魔法.请记住,自Windows 2000以及Windows 7中的新库结构以来,我们需要处理NTFS重分析点等事务.

Rog*_*mbe 9

简短回答:不是真的.

没有简单的方法可以在Windows上获取文件的规范名称.可以通过重新分析点通过SUBST获得本地文件.你想处理NTFS交叉点吗?Windows快捷方式?怎么样 - \\?\-cacaped文件名

远程文件可通过映射的驱动器号或UNC获得.这是UNC到原始服务器吗?你在使用DFS吗?服务器是否使用重新分析点等?服务器是否有多个名称?IP地址怎么样?它有多个IP地址吗?

所以,如果你正在寻找像Windows上的inode号这样的东西,它就不存在了.例如,请参阅此页面.

  • 哇.真是一团糟.为什么在Windowsland中不容易? (3认同)
  • 从该页面开始:"根据操作系统的基础网络功能和连接的服务器类型,GetFileInformationByHandle函数可能*失败*,返回*部分信息*,或给定文件的完整信息." (3认同)