AS3 удалить файл, как только он был доступен через URLLoader
В AS3 в AIR я использую URLLoader для загрузки данных JSON из файла для анализа. Затем я хочу добавить объекты к данным и переписать тот же файл, используя WRITE, а не APPEND. Компилятор AIR, по сути, говорит: "Нет, файл не используется".
Обнуление данных или закрытие URLLoader перед перезаписью или удалением файла не работают.
Как вы получаете контроль над файлом, когда URLLoader загрузил его данные?
2 ответа
Используйте FileStream вместо URLLoader, и вам не нужно будет использовать хакерский таймер 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();
}