确定两个路径是否引用C#中相同文件的最佳方法

确定两个路径是否引用C#中相同文件的最佳方法,第1张

确定两个路径是否引用C#中相同文件的最佳方法

据我所知(1)
(2)
(3)
(4),JDK7的方法是通过在文件上调用GetFileInformationByHandle并比较dwVolumeSerialNumber,nFileIndexHigh和nFileIndexLow。


每个MSDN:

您可以比较BY_HANDLE_FILE_INFORMATION结构中返回的VolumeSerialNumber和FileIndex成员,以确定两个路径是否映射到相同的目标。例如,您可以比较两个文件路径并确定它们是否映射到同一目录。

我不认为此功能由.NET包装,因此您必须使用P /
Invoke。

它可能适用于网络文件,也可能不适用于网络文件。根据MSDN:

根据 *** 作系统的基础网络组件和连接的服务器的类型,GetFileInformationByHandle函数可能会失败,返回给定文件的部分信息或完整信息。

快速测试表明,在使用SMB /
Samba连接的Linux系统上,该链接在符号链接上可以按预期(相同的值)工作,但是当使用指向同一文件的不同共享访问文件时,它无法检测到文件相同(
FileIndex相同,但VolumeSerialNumber不同)。



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5567323.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-14
下一篇 2022-12-14

发表评论

登录后才能评论

评论列表(0条)

保存