golang - 比较两个txt文件

时间:2015-09-06 08:40:59

标签: string text go slice

我想知道文件更改时的内容

有一个simeple 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'改为' 2' 7,7'

我可以通过循环找到改变的东西。但我想知道是否有更好的方法来检查

1 个答案:

答案 0 :(得分:5)

而不是循环使用标准的第三方库,只需要很小的优化。

我过去使用的其中一个库是Go port of google-diff-match-patch(@Not_a_golfer在评论中建议的库。)。

您可以通过首先计算两个文件的sha2哈希来优化它,如果它们不相同,您可以假设它们已更改,否则(可能)它们是相同的,并跳过diff操作。

这种优化的一个缺点是,由于鸽子洞原理,理论上可能对于不同的内容具有相同的散列值。但是,发生的可能性非常小。

编辑(基于@ elithrar的评论): 由于计算非常大的文件的哈希值,可能很耗时。您可以计算块中的sha2(大小取决于sha2系列中的特定哈希算法)。这使您能够尽早摆脱困境,并提高速度。