天天看點

對兩個檔案進行比較并顯示異同之開源解決(顯示增加删除)

由于公司項目需要對兩個檔案進行比較.(其實是資料庫文本字段)

并且顯示異同.

這裡不是進行一個簡單的比較.有一個檔案就是

text1  1234

text2   012324

這兩個檔案并不是一個字段都不同.是以用一個一個 對比的辦法是不可能的.因為text2 隻是在 text1的基礎上

在首字母上面增加了一個0 其他的沒有改變...由于項目緊..沒有自己實作..(自己實作也沒有什麼太好的思路)

這裡就不讨論原理了..

<a href="http://www.incava.org/projects/java/java-diff/"></a>

<a href="http://www.incava.org/projects/java/java-diff/">http://www.incava.org/projects/java/java-diff/</a>

<a href="http://www.incava.org/pub/java-diff/java-diff-1.0.5.tar.gz">檔案下載下傳</a>

這個是開源的解決方案..在網絡上面找到的.分享下.

實作很簡單一共有兩個類..兩jar包都沒有..直接把源檔案放到工程下面進行測試..

demo也是很簡單的.

要求輸入的是一個object[] 或是一個collection的接口...

這個就不說你是怎麼将你的檔案轉換成數組了.

 下面看這個代碼:

 在main函數裡面運作:

顯示結果:

del: [1,-1] add: [1,2]

del: [3,3] add: [5,5]

其中difference是顯示不同的類下面有4個屬性:

 當delend 或 addend 為 -1 的時候表示不進行操作.

圖示:&lt;add&gt;表示增加&lt;del&gt;表示删除.

del: [1,-1]  沒有删除 add: [1,2]向a [1]中添加[1][2]

del: [3,3]  删除a中[3]  add: [5,5] 向a中添加[5]

[start,end]表示操作的數組下标從0開始.起始結束.

注:進行了del操作.數組長度減少.添加數組長度增加.

其中你自己調用.delstart,delend , addstart,addend就可以對數組進行标示了....

如果代碼中的&lt;add&gt;換成其他的&lt;b&gt;标簽就可以在html中.顯示檔案的不同了.

通過arraylist 實作對資料的整理.用remove 删除.用add(index,object)進行添加.

結果:

a&lt;add&gt;x&lt;/add&gt;bcde

a&lt;add&gt;y&lt;/add&gt;&lt;add&gt;x&lt;/add&gt;bcde

a&lt;add&gt;y&lt;/add&gt;&lt;add&gt;x&lt;/add&gt;&lt;del&gt;b&lt;/del&gt;cde

a&lt;add&gt;y&lt;/add&gt;&lt;add&gt;x&lt;/add&gt;&lt;del&gt;b&lt;/del&gt;cd&lt;add&gt;j&lt;/add&gt;e

最後顯示了a變成b的全部過程.