Linux 空格处理

来源:互联网 发布:网络电视看翡翠台直播 编辑:程序博客网 时间:2024/06/04 18:00

前不久做了一个碎片升级,近日将需要升级的文件由window移入Linux下出来了很多问题。

比较令人深刻的问题就是将一个文件(这里假如) A.xml文件在windowXP下生成MD5值放入Linux下,通过我的升级程序从Linux下载放入刚才的Window中,再一次重新生成MD5发现与原来的MD5不一样,这时我的第一反应,

1. 下载过程文件损坏

2. 更新程序针对XML文件保存有问题(更新实质就是一个拷贝程序,只不过源是WEB)

从这两点着手后,换了后缀名,文件下载后MD5值意外的匹配上,而且经过多次的下载都没有问题,所以排除第1。至于第2我也没有办法证实,毕竟在没解决之前。谁让你这个程序下载后文件MD5值对比失败,不找你找谁。

 

这里大致讲下我的碎片升级原理:

原来很多游戏,软件在升级时采用的方法是这样,客户端保存一个版本号,服务端也保存一个,每次运行程序或游戏时对比这两个版本判断是否需要更新。这种做法每次更新需要软件的一整包,很恼火。

正因为如此,才会产生碎片升级这玩意,顾名思义碎片升级就是每次升级时对比每个文件是否有改动,从而决定这个文件是否需要更新。

当然在操作中效率,文件的对比都是我们要考虑的问题,首先说对比问题,显而易见,我们只要为每个文件生成一个MD5值,当这个文件改动时,相应的MD5肯定会不同。至于效率就是不可能每次运行软件都去对比每个文件,这不太现实。所以我们只需要将所有文件的MD5值汇总再一次生成一个新的MD5值判断这个版本有没改动。大致情况就是这样。

 

现在回到开始的问题,在百般无奈下使用对比工具Beyond Compare在16进制对下发现传会来的文件所有的回车都变成0D,仔细思考了后貌似知道了大概,最后将所有.xml文件UEStudio工具重新另存为一遍,在另外为框中换行符选择“Unix 终止符 LF”,问题解决。

 

问题虽然解决,但还是在思考是不是更新程序出了问题,不过话题到这就要画上句号,在此谢谢在这个问题上帮助过的朋友,同事。