比较本地文件和云文件(使用 Dropbox 和 DropNet lib)
本文关键字:文件 Dropbox DropNet 使用 lib 比较 | 更新日期: 2023-09-27 17:55:58
在C#中,我正在使用DropNet lib创建一个客户端来同步本地文件和Dropbox文件夹。
如果云和本地文件夹中都存在相同的文件,如何检查它们是否等效,或者两者中哪一个是最新的?如果我将云文件的修改日期与本地文件的上次写入时间进行比较,这些日期总是相互冲突的,可能是因为客户端时间与 Dropbox 的服务器时间不同。如何使文件高效比较?
API 允许您与正常的 Dropbox 生态系统进行交互,在与 Dropbox 同步时,一个帐户上可能有超过 2 个客户端。为了调和这一点,Dropbox服务器被认为是事实来源。因此,当您与Dropbox同步时,目的是您应该尽快从服务器获取所有更改,并将所有本地更改报告给服务器。
按照这些思路,虽然Dropbox API目前没有提供获取远程文件的文件ID或哈希的方法(尽管我们将其作为功能请求),但它确实提供了了解文件是否已远程更改的方法,以便您可以更新本地状态。通过/metadata API 调用在特定路径上使用文件的"rev"属性的一种方法:
https://www.dropbox.com/developers/core/docs#metadata
如果自上次检查 rev 以来已更改,则该路径上的文件已更改。
另一种方法是使用/delta:
https://www.dropbox.com/developers/core/docs#delta
您可以偶尔致电此地址,以了解您需要对本地州进行的任何更改以恢复最新状态。
逐字节比较可能是最正确的方法。阅读此链接,了解有关文件哈希的讨论。
https://stackoverflow.com/a/7931320/1706610
这是一个逐字节文件比较方法的好链接。
http://www.dotnetperls.com/file-equals