我想知道的內容時,文件更改golang -Comparing 2個txt文件
有一個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'
我可以找到循環改變的東西。但我不知道是否有一些更好的方法來檢查
我想知道的內容時,文件更改golang -Comparing 2個txt文件
有一個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'
我可以找到循環改變的東西。但我不知道是否有一些更好的方法來檢查
而不是循環使用標準的第三方庫,以小優化。
我過去使用過的圖書館之一是Go port of google-diff-match-patch(與@Not_a_golfer在評論中建議的圖書館相同)。
您可以通過首先計算sha2
這兩個文件的散列值來優化它,如果它們不相同,則可以假定它們已更改,否則(可能)它們相同,並跳過diff操作。
這種優化的一個缺點是,由於鴿子洞原理,理論上可能對於不同的內容具有相同的散列值。但是,發生的可能性很小。
EDIT(基於@ elithrar的評論): 由於散列計算非常大的文件,可能會非常耗時。您可以分塊計算sha2
(大小取決於sha2
家族的特定哈希算法)。這使您能夠儘早獲得救助,並提高速度。
你也可以使用緩衝讀取器來讀取文件塊(比如說4K塊),對它們進行散列並進行比較。這樣可以避免散列大文件,提高速度(提前退出)並避免衝突。 SHA-2應該是合適的。 – elithrar
@elithrar編輯,以體現這一點。 – desaiparth
也許是差異庫? https://github.com/sergi/go-diff –