ruby检查文件是否实际修改的最佳方法是什么?

时间:2011-08-07 16:29:41

标签: ruby-on-rails ruby hash

我正在编写一个应用程序,将ruby(文件A)中序列化的数据转换为xml格式(文件B)。 为了避免重新转换未更改的文件,我已经添加了修改日期检查:如果文件A中的最后一次修改比文件B中的最后一次修改旧,我们可以避免新的转换。

UNF。某些文件A被覆盖但保留相同的内容。这使得转换过程徒劳无功,我想避免它。

我在考虑在磁盘上存储最后转换后的文件A的哈希,然后在转换之前我可以检查文件的哈希值是否已经改变。

有没有办法在ruby中轻松创建这样的哈希码?

3 个答案:

答案 0 :(得分:5)

require 'digest/sha1'

Digest::SHA1.hexdigest(File.read("/a")) # => "da39a3ee5e6b4b0d3255bfef95601890afd80709" 

答案 1 :(得分:0)

你的文件有多大?

如果它们不那么大,每次更新文件B时,都可以将文件A的副本写入文件C.

如果要再次更新文件B,请对文件A和B执行差异,如果它们不同,则更新文件B.

答案 2 :(得分:0)

还有其他解决方案:

  • 重写序列化文件并在顶部插入注释,或者只是在末尾添加注释,将其标记为已经转换

  • 转换后将文件移至子目录