检测两个文件是否完全相同,比较什么?
我想知道如何比较两个文件以确定它们是否完全相同。 我知道如何比较文件名、创建/修改日期,甚至如果需要的话还可以比较哈希值。
但是我不知道如何比较文件上的元数据(我实际上不知道它是如何存储的):安全配置、兼容性设置、潜在的防病毒时间戳等等。
我的最终目标是深入比较不同计算机上的两个文件系统,
谢谢 史蒂夫
[编辑]为了澄清我重新表述了问题的标题
I'd like to know how to compare two files to determine if it is exactly the same one.
I know how to compare filename, date of creation/modification and even hash if required.
However I don't know how to compare meta data on the file (I actually don't know how it is stored) : security configuration, compatibility settings, potential antivirus timestamp and so on.
my final goal is to deep compare two file systems on separate computers
thanks
steve
[edit] in order to clarify I reformulate the title of the question
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
文件由什么构成?在现代文件系统(例如 NTFS)上,您有
其余的(配置、防病毒时间戳/这是什么/等)存储在文件外部,而不是文件。
因此,您需要检查文件的上述部分并进行比较。
存在不同的方法来读取不同的信息,您需要使用所有这些方法将它们组合在一起并对不同的文件进行比较。
What constitutes a file? On modern filesystem (say NTFS) you have
The rest (configuration, antivirus timestamp /what's this/ etc) is stored outside of the file and is not the file.
So you need to check the above mentioned bits of the file and compare them.
Different methods exist for reading different bits of information and you need to use them all to get all them together and compare them for different files.
只需完成 System.IO.File 上的所有 getter 即可。
如果您对“同一文件”的定义依赖于其他任何内容(例如在不同计算机上的绝对路径),那么也请获取它,但您还没有明确那是什么。
Just work through all the getters on System.IO.File.
If there's anything else that your definition of "same file" depends on (like the absolute path if on different machines), then get that as well, but you haven't made clear what that is.
您需要对两个文件进行 MD5、SHA 哈希,并比较两者是否具有相同的总和。
检查 System.Security.Cryptography 中的 MD5CryptoServiceProvider 和 SHA512CryptoServiceProvider。
它是这样的:
在实际的解决方案中,您可能希望以块或类似的方式计算哈希值,因为要比较的文件可能太大,无法将所有字节读取到内存并对它们进行哈希处理。
You need to MD5, SHA hash both files and compare if both have the same sum.
Check the MD5CryptoServiceProvider and SHA512CryptoServiceProvider in System.Security.Cryptography.
It's something like this:
In an actual solution you may want to compute the hash in chunks or something like this, because maybe files to compare are too big to read all bytes to memory and hash them.