比较文件 - 检查更新

时间:2013-10-22 11:12:20

标签: android flex flash-builder4.5

我正在flash builder 4.6中构建一个应用程序,我有文件(jpgs flvs等)在线,但为了节省带宽我将文件下载到用户文件夹,所以它们只下载一次,到目前为止所有不错,但是,我需要检查移动设备上已存在的文件是否已在线更新并重新下载。我试着在没有运气的情况下寻找一个这样的例子。

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

好吧,要查看文件夹中的文件,简单的var files:Array = assets.getDirectoryListing();会为您提供所需内容,

现在的问题是如何知道你的文件是否更新......基本上如果它们总是有相同的名字你就是不能......我做了什么,生成一个随机数,每次添加新文件,并将其添加到文件名中,当您检查时,如果您具有相同的编号,则无需更新,而在另一种情况下,您需要更新,

这只是你能做什么的一个想法,如果你有兴趣,我可以帮助你,

干杯!!


这是一个可能使它更清晰的例子: 我做的是:

xml上的文件名如下所示:file_name?123123当我再次读取xml时,我这样做是为了检查:

var arr1:Array = filename.split("?"); // file name from the localStorage
var arr2:Array = xml.file.name.toString().split("?"); // file name from the XML file
if(arr1[arr1.length -1] != (arr2[arr2.length -1]){
   //download the new file and replace the old file
}

ps:我用?做了这个,因为@在读取xml时遇到了一些问题,而且因为我在Windows上工作,所以在文件名中不接受在存储它之前,我只用fileName.split("?").join("@");

更改文件名

答案 1 :(得分:0)

我个人与app配置文件类似。我的应用程序的大部分内容完全由我编写的API驱动,并且API有时会生成大量的JSON数据供应用程序使用。为避免每次启动时下载此数据(通常约为200-300kb),我遵循以下模式:

  1. 检查文件是否存在(File.exists
  2. 如果文件不存在,请向服务器发送参数为update且值为0的配置文件的请求。这确保没有Unix时间戳会小于此
  3. 如果文件存在,请将File.modificationDate.time作为update
  4. 发送
  5. 在服务器上,检查更新是否早于数据的修改时间(每当数据库更新时我都会将时间戳保存到SQL数据库,尽管您只需检查文件本身的修改时间)
  6. 如果更新时间较晚,请发送数据。如果它更新,发送一个简单的json消息。我通常会发送{'valid':'no new data'}
  7. 之类的内容

    这显然需要一些工作来处理AS3端的JSON返回以及一些PHP,但它确实有效,应该适用于任何类似的情况