golang - 比较两个txt文件

Gam*_*nbi 2 string text go slice

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

有一个simeple txt文件

textOne 1,2,3,4,5,6,7,8,9,10
Run Code Online (Sandbox Code Playgroud)

我把它改成了

textTwo 1,2,3,4,7,7,7,8,9,10
Run Code Online (Sandbox Code Playgroud)

所以'一'和'5,6'改为'二','7,7'

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

des*_*rth 5

而不是循环使用标准的第三方库,具有小优化.

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

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

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

编辑(基于@ elithrar的评论): 由于计算非常大的文件的哈希值,可能非常耗时.您可以计算sha2块(大小取决于来自sha2系列的特定散列算法).这使您可以提前纾困,并提高速度.

  • 您还可以使用缓冲读取器来读取文件的块(例如,4K块),对它们进行哈希处理并进行比较.这样可以避免散列大文件,提高速度(提前纾困)并避免冲突.SHA-2应该是合适的. (3认同)