AS3 удаляет файл после доступа к нему через URLLoader

В AS3 в AIR я использую URLLoader для загрузки данных json из файла для анализа. Затем я хочу добавить объекты к данным и перезаписать тот же файл, используя WRITE, а не APPEND. Компилятор AIR говорит, по сути, «не могу, файл уже используется».

Обнуление данных или закрытие URLLoader перед повторной записью или удалением файла не работает.

Как вы получаете контроль над файлом после того, как URLLoader загрузил его данные?


person Craig    schedule 03.12.2013    source источник
comment
Вы пытались использовать FileStream вместо URLLoader? FileStream DOC, я не не знаю, как вы можете написать файл с помощью URLLoader   -  person Benjamin BOUFFIER    schedule 03.12.2013


Ответы (2)


Используйте FileStream вместо URLLoader, и вам не нужно будет использовать хакерский таймер 0 мс.

person David Mennenoh    schedule 18.12.2013

Ну, я вижу, что это было решено другими раньше. Очень небольшая задержка (на самом деле таймер 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();
}
person Craig    schedule 03.12.2013