二进制文件比较

l 业务场景

我们公司的程序是CS结构的,因此需要在每个客户端均要布署一次。客户端升级就成了一个比较头痛的事情,写个客户端自动升级的小工具,当然可以。不过,也有个小问题麻烦点,假设客户端机器上的程序中,某个文件,例:pbd文件,本身没有改过,升级前后都一样,这样的话,就没有必要升级。我们只升级那些有变化的文件。问题由此而来啊,如何比较一个pbd或其他类型的文件是否相同呢?比如:pbd、jpg、exe等。

有人说根据文件大小,这个是最简单的,也是最不保险的,比如:一个pbl里我只修改了一个数据窗口里某个栏目的类型,由varchar(10)àvarchar(20),这样的话,编译后的pbd文件大小是一样的。

也有人说使用文件创建时间或最后一次修改时间,其实也不保险的,首先,每个客户端机器上的时间可能都不一样,而且系统时间也可以随便修改。文件删除后新复制,时间就会有所变动,所以也不可行。

l 解决方法

最简单的办法是将数据保存成net里的byte[]类型,然后逐个字节比较,这样即使只修改了一个栏目类型的话,也是不同的。

不知道各位有没有其他更好的判断方法?

有人说采用md5方法,没有试过,听说也有重复的可能性。。。

l 源代码如下

clip_image001clip_image003

l 代码文件如下

/Files/xiyang1011/二进制文件比较.rar

你可能感兴趣的:(二进制)