在AIR的AS3中,我使用URLLoader从文件加载json数据进行解析。然后我想使用WRITE而不是APPEND将对象添加到数据并重写相同的文件。 AIR编译器说,基本上"不能做,文件正在使用中。"
在重写或删除文件之前,取消数据或关闭URLLoader无法正常工作。
一旦URLLoader加载了数据,你如何控制文件?
答案 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();
}