在AIR中的AS3中,我使用URLLoader从文件中加载json数据进行解析。然后,我想向数据中添加对象,并使用write而不是APPEND重写同一个文件。AIR编译器说,基本上"不行,文件正在使用中。"
在重新写入或删除文件之前清空数据或关闭URLLoader是不起作用的。
一旦URLLoader加载了文件的数据,你如何控制它?
使用FileStream而不是URLLoader,您就不需要使用一个糟糕的0ms计时器。
好吧,我看到其他人以前已经解决了这个问题。在删除函数消除这个问题之前,只需要一个非常轻微的延迟(实际上是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();
}