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();
}
Другие вопросы по тегам