前言: 在上一节课程当中,我们已经完成了单文件的自动更新了,但是对于多文件的更新仍然没有涉及到,现在我们就来进行多文件更新的课程 思路讲解: 可能细心的同学已经发现了,在使用我们上一节课程制作的自动更新程序的时候,如果我们云端的文件发生了更改,这个时候我们无需进行任何代码的处理,在执行 downloadfile 的时候,我们的程序会自动判断当前文件是否需要更新,这是因为我们的百宝云在之前版本更新的时候,内部函数会自动根据当前文件的md5值判断当前文件是否需要更新,所以,我们无需在本地再次判断当前文件是否和云端相同. 也就是说,当我们的文件更新了之后,我们只需要把更新后的文件覆盖原文件就可以了.云端无需编写任何一句代码,就可以实现自动更新的功能了. 如果是多个文件需要更新的话,我们就需要挨个文件进行下载,换句话说,也就是说我们需要知道哪些文件需要更新 有的同学可能到这里会用一个非常简单的办法来解决这个事情:把本地需要更新的文件放在一个数组里面,类似下面的写法,易语言部分略
这个呢 就是一个错误的例子,作为文件更新,我们不可能是指定几个文件去更新(当然你百分之百确定只更某几个文件的除外),也不是根据本地文件来进行判断,万一用户的文件不完整呢? 所以,这个文件遍历的过程,我们需要放在云端来做,也就是我们需要在百宝云云端代码里写这个过程 我们这里使用 commoninterface 接口来做,如果不方便使用百宝云组件的话,也可以做成使用GET/POST方式获取,这里不多做解释. 云端代码:
云端的代码非常简单,对指定文件夹下[这里直接使用下载目录来做,也就是说你需要把你的文件扔到下载目录]的所有文件进行一次遍历,并且把返回的文件数组以JSON格式进行返回 这里就先不做递归扫描所有下级目录的操作,避免有的同学跟不上节奏. 我们现在已经获取当前目录下的所有文件列表了,我们下面把这个加入到我们的程序当中 首先第一步,向云端发送一条"getfilelist"的命令,由于我们使用的是 commoninterface 接口,所以我们现在就调用 commoninterface 来获取文件列表. TC代码
易语言代码
在获取了列表之后,如果你的操作没有错误的话,应该得到的是这样格式的返回值 - "{"0":"ColorImageEnhancement.wmv","1":"ImageStabilization.wmv","2":"111.apk","3":"atl71.dll","4":"测试程序.exe","5":"APlayer.dll","6":"FilmModeDetection.wmv","7":"APlayerCaller.dll"}"
复制代码
如果格式不正确的话,从今天的第一步开始,逐步检查是否正确(如果你连我的token都抄对了的话,建议你先看一下百宝云基础课程或者是从上一章开始看…) 如果以上内容都没错的话,我们继续往下做 我们将取回的文件列表进行解析,并且转化为数组,并且进行循环处理 TC代码:
易语言代码:
OK!我们来测试一下效果~
无论是更新准确度和更新速度都是非常令人满意的~ 好了,我们今天这一节课程就到这里为止,全部源码均不提供,因为所有的代码都已经截图给大家了~ 如果你连自己手动敲一遍代码都不愿意的话……我只能告诉你……现已加入百宝云应用商店…… |