2014-04-01 31 views
2

我正在使用DropNet lib創建客戶端以同步本地文件和Dropbox文件夾。
如果同一個文件存在於雲和本地文件夾中,我該如何檢查它們是否相同,或者哪兩個更新? 如果我將雲文件的ModifiedDate與本地文件的LastWriteTime進行比較,這些日期通常是衝突的,可能是因爲客戶端時間與保管箱的服務器時間不同。 如何進行高效的文件比較?在C#中比較本地文件和雲文件(使用Dropbox和DropNet庫)

+0

計算兩個文件的散列(md5,sha1,無論)並進行比較。 – Alberto

+0

Dropnet lib允許我在不下載文件的情況下檢查該控件? –

回答

4

Dropbox的API允許你用正常的Dropbox的生態系統相連接,並與Dropbox的同步時可能會有很好的單一賬戶超過2個客戶端。爲了協調這一點,Dropbox服務器被認爲是真相的來源。因此,當您與Dropbox進行同步時,意圖是您應該儘快從服務器獲取所有更改,並將所有本地更改報告給服務器。

沿着這些路線,儘管Dropbox API目前不提供獲取遠程文件的文件ID或散列的方法(儘管我們將此作爲功能請求來解決),但它確實提供了一些方法來了解文件已經遠程更改,以便您可以更新您的本地狀態。經由/元數據API調用中使用一個文件的「轉」屬性在特定路徑的一種方法:如果自上次檢查了它的轉速改變

https://www.dropbox.com/developers/core/docs#metadata

,在該路徑的文件已經改變。

另一種方法是使用/△:

https://www.dropbox.com/developers/core/docs#delta

你可以偶爾叫這瞭解你需要對你的本地狀態得到回升到日期的任何變更。

+0

因此,解決方案是在本地創建日誌文件,其中我保存每個下載文件的REV。這是一個很好的解決方案。因此,我得出結論,我不能做相反的事情,但我已經部分解決了我的問題。謝謝。 –

0

逐字節比較可能是最正確的方法。閱讀此鏈接以獲取有關文件散列的討論。

https://stackoverflow.com/a/7931320/1706610

這裏是一個不錯的鏈接,通過字節文件比較方法的字節。

http://www.dotnetperls.com/file-equals

+0

感謝您的回答,但其中一個要比較的文件位於雲空間中。我無法循環下載它們以進行(有效的本地)檢查!所以我想知道,如果使用Dropnet,兩個文件中的哪一個(本地文件和雲中文件)是最新的 –