如何在iOS中以增量方式更新文件。 (文件修补)

时间:2013-06-28 11:54:08

标签: ios dynamic versioning

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

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

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

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

谢谢

3 个答案:

答案 0 :(得分:1)

您需要实施某种Binary delta compression,例如zdeltaRemote Differential Compression,例如rsync中的{。}}。

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

修改:我还建议您阅读this

答案 1 :(得分:0)

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

尝试在您需要添加到请求标头的范围内获取部分内容:

Range: bytes=0-999

答案 2 :(得分:0)

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