0

我的应用程序中有一个巨大的文本文件(1.0 版)。

让我们假设这个文件的新版本 (2.0) 刚刚发布。大部分文件保持不变,但新 (2.0) 版本有一些修改(删除了一些行,添加了一些行)。

我现在希望将文件 (1.0)更新到新版本 (2.0),但不希望再次下载整个文件。我很想用新文件的更改修补文件,从而节省从我的服务器下载整个新文件的带宽。(类似于 git 或 svn act 等版本控制系统的方式)

如何以编程方式执行此操作?是否有可用的 iOS 库?

谢谢

4

3 回答 3

1

您需要实现某种二进制增量压缩,例如zdelta远程差分压缩,例如rsync中的那个。

就我个人而言,我不知道专门为 iOS 实现的这种算法,但我确信有可能找到一种用 C/C++ 实现的算法,可以在 iOS 环境中无缝使用。

编辑:我还建议您阅读内容。

于 2013-06-28T12:23:18.873 回答
0

这实际上是一个大问题...如果您的API让您询问特定范围内的文件的数据,您可以只询问您需要替换的数据范围,并在该范围内查找文件并覆盖特定数据...这意味着您必须在每次更新文件时跟踪更改...并且您的应用更新必须知道要请求的范围...这不是解决方案...我希望将是实施您自己的解决方案的起点

要尝试在某个范围内获取部分内容,您需要在请求标头中添加如下内容:

Range: bytes=0-999
于 2013-06-28T12:15:33.607 回答
0

我认为,您可以在没有第三方库的情况下自己完成此操作。为此,您只需要 1) 一段代码,它将生成用于连接文件版本的元数据(偏移量、长度和指向要在旧版本中更改的数据的指针);2)一段将完成艰苦工作的代码:阅读元数据并将部分放在正确的位置。与偏移量斗争了几天,你完成了;)祝你好运!

于 2013-06-28T12:54:02.030 回答