比较本地文件和云文件(使用 Dropbox 和 DropNet lib)

本文关键字:文件 Dropbox DropNet 使用 lib 比较 | 更新日期: 2023-09-27 17:55:58

在C#中,我正在使用DropNet lib创建一个客户端来同步本地文件和Dropbox文件夹。
如果云和本地文件夹中都存在相同的文件,如何检查它们是否等效,或者两者中哪一个是最新的?如果我将云文件的修改日期与本地文件的上次写入时间进行比较,这些日期总是相互冲突的,可能是因为客户端时间与 Dropbox 的服务器时间不同。如何使文件高效比较?

比较本地文件和云文件(使用 Dropbox 和 DropNet lib)

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