跳至內容

檔案比對

出自Taiwan Tongues 繁中維基
於 2025年10月22日 (三) 04:03 由 TaiwanTonguesApiRobot留言 | 貢獻 所做的修訂 (從 JSON 檔案批量匯入)

(差異) ←上個修訂 | 已批准修訂 (差異) | 最新修訂 (差異) | 下個修訂→ (差異)

編輯文件、程式碼或任何資料時,總有引入錯誤的風險。檔案比較工具透過顯示兩組或多組資料之間的差異,專注於新的資料並忽略未變更的部分,使電腦運算更簡單、更有效率。這類工具通常以 Unix 的 diff 工具程式為名,泛稱為 diff,有各式各樣的方法可以比較資料來源並顯示結果。

一些廣泛使用的檔案比較程式包括 diff、cmp、FileMerge、WinMerge、Beyond Compare 和 File Compare。

由於了解變更對於程式碼或文件的撰寫者至關重要,許多文字編輯器和文書處理器都內建了必要的功能,以檢視檔案或文件不同版本之間的變更。

方法類型

尋找差異的最有效方法取決於來源資料以及變更的性質。其中一種方法是找出兩個檔案之間的最長共同子序列,然後將不共通的資料視為插入或刪除。

1978 年,Paul Heckel 發表了一種演算法,能夠識別大多數移動的文字區塊。IBM History Flow 工具即採用此演算法。其他檔案比較程式也能找出區塊移動。

一些專門的檔案比較工具會找出兩個檔案之間的最長遞增子序列。rsync 協定則使用滾動雜湊函數,以低通訊開銷比較兩台遠端電腦上的兩個檔案。

文書處理器中的檔案比較通常是字詞層級,而大多數程式開發工具中的比較則是行層級。在某些特殊應用中,位元組或字元層級的比較也相當實用。

顯示

檔案比較的最佳結果顯示方式取決於許多因素,包括來源資料的類型。程式碼固定的行數提供了明確的比較單位。但這對文件來說並不適用,因為在文件中新增一個單字就可能導致後續行的換行方式不同,但內容本身並未改變。

最常見的變更顯示方式有兩種:並排顯示,或是突顯資料插入與刪除的整合檢視。在任一種並排檢視中,為了提高效率,介面可能會透過程式碼摺疊或文字摺疊,隱藏檔案中未變更的部分,僅顯示有變更之處。

原理

使用比較工具有各種原因,而工具本身也採用不同的方法。要比較二進位檔案,工具可能會使用位元組層級的比較。若要比較文字檔案或電腦程式,許多工具則使用並排的視覺化比較。這讓使用者有機會在將檔案合併成新版本之前,選擇要保留或捨棄哪些變更,或者也可以透過某種形式的「版本控制」,將兩個版本都保留下來以供日後參考。

檔案比較是檔案同步與備份中一個重要且不可或缺的過程。在備份方法學中,資料毀損是個重要的議題。資料毀損發生前很少有警訊,這使得還原變得困難甚至不可能。問題通常要到下一次有人嘗試開啟檔案時才會顯現。在這種情況下,比較工具可以幫助找出問題是在何時被引入的。

歷史用途

在檔案比較出現之前,已有機器用來比較磁帶或打孔卡。IBM 519 卡片複製機能夠判斷一副打孔卡是否相同。1957 年,John Van Gardner 開發了一個系統,透過比較已載入的 Fortran 程式區段的校驗和,來為 IBM 704 上的編譯問題進行除錯。

參見

參考資料

外部連結

Category:資料差異分析 Category:工具軟體類型