2014-02-12 33 views
2

在我最終決定自行發佈問題之前,我已閱讀過幾個關於SO的問題和解答。爲某些文件的自動更新編寫修補程序應用程序

我的目標是寫一個補丁,它會針對一些位置,最多最新文件的某些內容。如果能夠儘可能少地下載和上傳,最好的辦法是檢測修改後的文件,並替換完整的文件或者更好的是隻替換二進制增量。

我想過做在服務器端塊的校驗和客戶端上對他們的檢查,只有得到那些塊,有不同的校驗。

我真正想知道的是理論方法,因爲我讀了一下到VCDIFF和其他方法,但我不知道我理解他們。這種問題有沒有共同的方法?大塊的想法是否正確?我將如何着手在C#或Java中實現它?

預先感謝您!

回答

2

根據文件類型(文本,二進制),你可以使用一個diff算法來縮小你要發送的變化。

我們的一個實習生做的版本控制管理的研究,他與一個diff算法提出了基於一些研究。也許它對你有用。

你可以找到一些文獻在這裏:

  1. E.邁爾斯「的O(ND)差分算法及其變種,」 Algorithmica頁。 15,1986.
  2. mmanela,「Diffplex」,http://diffplex.codeplex.com/releases/view/66796

如果你想發送文件,我至少會考慮校驗和和長度,因爲這些肯定是唯一的。

您可以創建一個格式像

  • 校驗
  • 長度

張貼到服務器。讓它迴歸的變化,如果:

  1. 的文件不是在客戶端上尚未
  2. 校驗或長度不同

在其他情況下,離開它。

+0

這看起來很有趣 - 謝謝!但我認爲我需要的是知道如何去做一個補丁。我會創建文件的校驗和還是將其與文件中的一些校驗和字符串進行比較,我已經在服務器上預先創建了該文件?這是我不明白,我想。 – Igor

+0

查看我的更新回答 –

+0

好的..所以我會先讓修補器加載一個包含校驗和的文件。然後我讀取客戶端文件的校驗和和日期,並下載具有不同校驗和的文件(或文件塊)。聽起來不錯 - 謝謝你:)。如果你不介意的話,我會試試,然後將其標記爲正確的答案。謝謝您的幫助! – Igor

相關問題