【问题标题】:Saving/Reading a file from File.applicationStorageDirectory in an iPad Flex4.5 app在 iPad Flex4.5 应用程序中从 File.applicationStorageDirectory 保存/读取文件
【发布时间】:2011-11-14 09:43:04
【问题描述】:

我有一个在 iPad 上运行的 Flex 应用程序 (SDK 4.5.1)...我需要下载任何文件,将它们放在本地目录中(如 File.applicationStorageDirectory),然后在我的应用程序中查看文件。

所以在我的测试应用程序中,使用 urlLoader 类下载了一个 png 图像。

这里是下载的完整处理程序:

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 行(这是一个图像组件)时,什么也没有出现......也许我可以写一个文件但我无法读取它?

【问题讨论】:

  • 您能否尝试将文件读入文件流对象,并将该文件流对象转换为位图数据以直接显示?然后我们可以查看错误是否与安全性、文件路径问题或数据加载损坏有关。

标签: actionscript-3 apache-flex flex4.5 flex-mobile


【解决方案1】:

经过 6 个小时的调试和编码...我用一个非常简单的解决方案解决了这个问题... 换行了

var pathFile:String = file.nativePath;

var pathFile:String = file.url;

他是这样解决file.url的:

app-storage:/img.png

.现在可以了!希望这篇文章对其他有这个问题的人有所帮助..谢谢大家

【讨论】:

    【解决方案2】:

    以下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();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-25
      • 1970-01-01
      • 2013-07-18
      • 1970-01-01
      • 2014-03-04
      • 1970-01-01
      相关资源
      最近更新 更多