更新:我通过一个出色的外部库解决了这个问题 - https://code.google.com/p/xdeltaencoder/.我做的方式在下面作为接受的答案发布
想象一下,我有两个单独的pc,它们都有一个相同的字节[] A.
其中一个pc创建了byte [] B,它几乎与byte [] A相同,但是是一个"更新"的版本.
对于第二台PC将byte [] A的副本更新为最新版本(byte [] B),我需要将整个字节[] B传输到第二台PC.如果byte [] B的大小很多GB,则需要很长时间.
是否有可能创建一个byte [] C,它是'byte [] A和byte [] B之间的"差异"?byte [] C的要求是知道byte [] A,可以创建byte [] B.
这样,我只需要将byte [] C发送到第二台PC,理论上它只是byte [] B的一小部分.
我正在寻找Java中这个问题的解决方案.
非常感谢您提供的任何帮助:)
编辑:在大多数情况下,数据更新的性质是将额外的字节插入到数组的部分中.当然,有些字节可能会被更改或某些字节被删除.byte []本身表示目标pc上所有文件/文件夹名称的树.byte []最初是通过创建自定义对象树,使用JSON编组它们,然后使用zip算法压缩该数据来创建的.我正在努力创建一个可以智能地创建对象c的算法.
编辑2:非常感谢大家给予的所有帮助,我很抱歉没有活动这么长时间.我很可能会尝试让外部库为我做delta编码.关于这个线程的一个很大的部分是我现在知道我想要达到的目标!我相信当我找到合适的解决方案时,我会发布并接受它,以便其他人可以看到我如何解决我的问题.再一次,非常感谢你的帮助.