【发布时间】:2015-12-02 00:06:58
【问题描述】:
我想知道文件更改时的内容
有一个简单的txt文件
textOne 1,2,3,4,5,6,7,8,9,10
我把它改成
textTwo 1,2,3,4,7,7,7,8,9,10
所以“一”和“5,6”改为“二”、“7,7”
我可以找到循环改变的东西。但我想知道是否有更好的方法来检查
【问题讨论】:
-
也许是一个差异库? github.com/sergi/go-diff
我想知道文件更改时的内容
有一个简单的txt文件
textOne 1,2,3,4,5,6,7,8,9,10
我把它改成
textTwo 1,2,3,4,7,7,7,8,9,10
所以“一”和“5,6”改为“二”、“7,7”
我可以找到循环改变的东西。但我想知道是否有更好的方法来检查
【问题讨论】:
使用标准的第三方库,而不是循环使用,进行小幅优化。
我过去使用的库之一是Go port of google-diff-match-patch(与@Not_a_golfer 在评论中建议的库相同。)。
您可以通过首先计算两个文件的sha2 哈希来优化这一点,如果它们不相同,则可以假设它们已更改,否则(可能)它们相同,并跳过 diff 操作。
这种优化的一个缺点是,由于鸽子洞原理,理论上可以为不同的内容具有相同的哈希值。但是,发生这种情况的可能性很小。
编辑(基于@elithrar 的评论):
由于计算非常大的文件的哈希值可能很耗时。您可以分块计算sha2(大小取决于sha2 系列的特定哈希算法)。这使您能够及早退出,并提高速度。
【讨论】: