共用方式為


偵測檔案變更

Sync Framework 檔案同步處理提供者會自動偵測針對同步處理範圍中的檔案和資料夾所做的變更。

明確和隱含變更偵測的比較

變更偵測必須在啟動同步處理工作階段之前執行。根據預設,Sync Framework 第一次在提供者上呼叫 GetChangeBatchProcessChangeBatch 時,會自動執行變更偵測。

Managed 程式碼:如果應用程式在初始化提供者時,指定 ExplicitDetectChanges 旗標,則必須先明確呼叫 DetectChanges 方法,再啟動工作階段。

Unmanaged 程式碼:如果應用程式在初始化提供者時,指定 FILESYNC_INIT_FLAG_DISABLE_IMPLICIT_DETECT_CHANGES 旗標,則必須先明確呼叫 IFileSyncProvider::DetectChanges 方法,再啟動工作階段。

內建變更偵測演算法

Sync Framework 具有內建演算法,可偵測對同步處理範圍中檔案和資料夾所做的變更。

下列其中任何一個屬性變更時,都會報告變更:

  • 最後修改檔案的時間。

  • 如果已啟用雜湊,為檔案計算的雜湊值。

  • 檔案大小。

  • 檔案或資料夾名稱。這項檢查會區分大小寫。

  • 由提供者處理的任何檔案屬性。

發現檔案的建立時間、大小和雜湊值 (使用雜湊時) 與先前已知檔案相同,但是檔案的名稱或路徑不同時,就會報告檔案移動或重新命名。如果有多個檔案符合上述條件,Sync Framework 會以原始檔案已刪除並已建立新檔案的方式作業。

Sync Framework 會將資料夾移動或重新命名視為舊資料夾已刪除,並已建立新資料夾。資料夾中的檔案會報告為移動。所以,在此情況下,檔案資料通常就不需要重新傳送。

計算變更偵測的雜湊值

如果應用程式在初始化提供者時,指定 CompareFileStreams 旗標 (適用於 Managed 程式碼) 或 FILESYNC_INIT_FLAG_USE_HASHING 旗標 (適用於 Unmanaged 程式碼),提供者會使用檔案資料流的所有內容,計算每個檔案的雜湊值。然後,提供者再比較這些雜湊值,允許以稍微降低一點效能的代價,進行功能更強大的變更偵測。

請參閱

參考

IFileSyncProvider 介面
FILESYNC_INIT_FLAGS 列舉
FileSyncProvider
FileSyncOptions

概念

同步處理檔案