2009-08-14 42 views
1

我正在實施一個.NET實用程序,以將本地文件夾與FTP位置同步。檢查文件是否相同的最佳方法是什麼?我正在使用名爲'edtfptnet'的.NET FTP客戶端API。我發現即使文件相同,exe文件的大小也不同。 API返回的大小與FileZilla顯示的文件大小相同。但它與FileInfo.Length獲得的大小不同。這兩個值都不同於Windows資源管理器在文件屬性中顯示的大小。爲什麼會發生?這不會發生在文本文件上。在FTP同步過程中檢查文件副本

有沒有其他方法可以快速檢查文件是否相同。訪問時間不同。該API只給出上次修改時間,這與上次寫入時間不同。

回答

1

通常,如果兩個文件的大小和修改時間相同,則可以假定它們是相同的。我不熟悉edtfptnet客戶端,但對於相同的文件,遠程文件大小應該等於FileInfo.Length,它應該與Windows資源管理器報告的大小相等(請確保您查看「Size:」而不是「磁盤上的大小: 「),除了在諸如VMS之類的神祕操作系統上(無論實際文件大小如何,文件以512個增量報告,或」塊「)。

爲了確保文件是相同的,您需要計算並比較每個文件的散列值。一些FTP服務器支持XCRC命令,它執行文件CRC32哈希的服務器端計算,然後將其與您爲本地文件計算的CRC32哈希(例如this post)進行比較。但是,除了比較文件大小外,還需要完成此操作。