仅根据文件之间的差异更新数据(java的delta)

 汐玉Shining 发布于 2023-01-31 16:24

更新:我通过一个出色的外部库解决了这个问题 - 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编码.关于这个线程的一个很大的部分是我现在知道我想要达到的目标!我相信当我找到合适的解决方案时,我会发布并接受它,以便其他人可以看到我如何解决我的问题.再一次,非常感谢你的帮助.

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有