AS3通过URLLoader访问后删除文件

时间:2013-12-03 00:45:01

标签: actionscript-3 air urlloader

在AIR的AS3中,我使用URLLoader从文件加载json数据进行解析。然后我想使用WRITE而不是APPEND将对象添加到数据并重写相同的文件。 AIR编译器说,基本上"不能做,文件正在使用中。"

在重写或删除文件之前,取消数据或关闭URLLoader无法正常工作。

一旦URLLoader加载了数据,你如何控制文件?

2 个答案:

答案 0 :(得分:2)

使用FileStream而不是URLLoader,您不需要使用hacky 0ms计时器。

答案 1 :(得分:0)

嗯,我发现之前其他人已经解决了这个问题。在删除函数之前需要一个非常小的延迟(实际上是一个0毫秒的计时器!)才能解决这个问题。 有趣的是,如果计时器被排除在wait()函数之外并且从那里调用了deleteIt(),则问题会返回。

import flash.filesystem.*;
import flash.net.URLLoader;

var json:URLLoader

function loadMyJSONData():void 
{
       json = new URLLoader();
       json.addEventListener(Event.COMPLETE, wait);
       json.load(new URLRequest("jsondata.json"));
}


function wait(e)
{
    var timer:Timer = new Timer(0, 1);
    timer.addEventListener(TimerEvent.TIMER, deleteIt);
    timer.start();

    //deleteIt();
}


function deleteIt(e)
{
    var fileToDelete:File = new File();  
    fileToDelete.nativePath = "C:\\AIR Test 2";         
    fileToDelete = fileToDelete.resolvePath("jsondata.json");           

    fileToDelete.deleteFile();
}