Сохранение / чтение файла из File.applicationStorageDirectory в приложении iPad Flex4.5 - PullRequest
2 голосов
/ 14 ноября 2011

У меня есть приложение Flex (SDK 4.5.1), которое работает на iPad ... Мне нужно скачать любые файлы, поместить их в локальный каталог (например, File.applicationStorageDirectory), а затем просмотреть файл внутри моего приложения.

Итак, в моем тестовом приложении скачано изображение в формате png с использованием класса urlLoader.

Вот полный обработчик загрузки:

private function onComplete3(event:Event):void{
 try{
    var ba:ByteArray  = event.target.data as ByteArray;
    var file:File=File.applicationStorageDirectory.resolvePath("img.png");
    var pathFile:String = file.nativePath;
    var fileStream:FileStream = new FileStream();  
    fileStream.open(file, FileMode.WRITE);  
    fileStream.writeBytes(ba);  
    fileStream.addEventListener(Event.CLOSE, fileClosed);  
    fileStream.addEventListener(IOErrorEvent.IO_ERROR,function(e:IOErrorEvent):void{
       status0.text = "STATE : ERROR 3"
    });
    fileStream.close();     
    status0.text = "STATO : OK";
    path0.text = pathFile; 
    immagine0.source = pathFile; 
  catch(e:Error){
    status0.text = "STATE : ERROR 2"
  }
}

На моем iPad я вижу, что загруженный файл существует, но когда я запускаю строку immagine0.source = pathFile (которая является компонентом изображения), ничего не появляется ... Может быть, я могу написать файл, но не могу его прочитать?

Ответы [ 2 ]

5 голосов
/ 15 ноября 2011

После 6 часов отладки и кодирования ... я решил эту проблему очень простым решением ... изменил строку

var pathFile:String = file.nativePath;

с

var pathFile:String = file.url;

Он решил файл .url следующим образом:

app-storage:/img.png

. Теперь это работает! Надеюсь, что этот пост будет полезен для других, у кого есть эта проблема .. Спасибо всем

0 голосов
/ 26 мая 2012

Следующие 2 функции предназначены для записи и чтения файлов в Flex 4.5.

protected function button1_clickHandler(event:MouseEvent):void
{
    var file:File = File.applicationStorageDirectory.resolvePath("samples/test.txt");
    var stream:FileStream = new FileStream()
    stream.open(file, FileMode.WRITE);
    stream.writeUTFBytes(contents.text);
    stream.close();
}
protected function button2_clickHandler(event:MouseEvent):void
{
    var file:File = File.applicationStorageDirectory.resolvePath("samples/test.txt");
    var stream:FileStream = new FileStream()
    stream.open(file, FileMode.READ);
    results.text = stream.readUTFBytes(stream.bytesAvailable);
    stream.close();
}
...