【发布时间】:2012-06-05 20:15:23
【问题描述】:
我正在编写一个扩展 Ant Zip Task 的 Java 类来为我完成一项特定的工作。我想创建一个 zip 文件,一旦创建了该文件,我想抑制 inode 中的访问时间,因此即使文件被修改,我也无法修改或找到不让它改变的方法。原因是我做了一个 md5 哈希,这取决于访问时间。因此,这给我带来了很多麻烦,并且使访问时间恒定将解决我的问题。 有人现在我将如何做到这一点? 谢谢!
【问题讨论】:
-
为什么不从 MD5 哈希中排除访问时间?通常,MD5 哈希仅基于内容,而不基于文件属性。
-
不幸的是,在我的情况下这是要走的路。
-
OK 下一个问题:你说,'不要改变,即使文件被修改了'。那么如果文件被修改了,MD5哈希不会因为内容的变化而变化吗?它只是因为访问时间的变化而变化?
-
是的,但是如果我修改文件并从中创建一个 zip 文件,则 md5 创建的哈希值会有所不同,我将使用该哈希值来确定文件是否在存储库。
-
这是一个准确的总结吗:您制作了一个 zip 文件,然后对 zip 文件运行 MD5 哈希。由于 zip 文件内部包含文件元数据信息,包括上次访问时间,如果您从完全相同的源材料创建一个新的 zip 文件,新 zip 文件上的 MD5 散列将与原始 MD5 不匹配hash(因为zip内容相同,但zip文件中存储的元数据访问时间不同)。
标签: java file ant md5 file-access