3

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

4

2 回答 2

4

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

您可以偶尔致电此电话以了解您需要对当地状态进行的任何更改以恢复最新状态。

于 2014-04-02T17:45:43.783 回答
0

逐字节比较可能是最正确的方法。阅读此链接以讨论文件哈希。

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

这是一个逐字节文件比较方法的好链接。

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

于 2014-04-01T14:58:58.217 回答