如何在 iOs 或 Android air 项目 (AS3) 上将下载的资产保存到磁盘

Posted

技术标签:

【中文标题】如何在 iOs 或 Android air 项目 (AS3) 上将下载的资产保存到磁盘【英文标题】:How to save downloaded assets to disk on iOs or Android air project (AS3) 【发布时间】:2013-01-11 15:17:40 【问题描述】:

我想出了如何保存 txt 等文件,但实际上我无法在 iPhone 硬盘上保存 mp3、jpg 或 zip 文件,我真的不明白为什么..

假设我在做以下事情:

var btAr:ByteArray = new ByteArray(); //initializing byte array
var snd:Sound = new mp3sound(); //this is an embeeded mp3 file !

snd.extract(btAr,int(mp3sound.length * 44.1) )  //extract the mp3 into a byte array
btAr.position = 0; 
var str:String = File.applicationDirectory.nativePath;  
appTempData = new File(str +"/\.\./tmp");    //temp folder of an ios app

fr = new FileStream();
try

    fr.open(
        appTempData     //  appTempData or appCache or appData or userDocs
        .resolvePath("myCache.mp3"),FileMode.WRITE); 
    fr.writeBytes(btAr)
    fr.close(); 

catch(er:Error)

    trace("ERROR: "+er);

没有错误,没有什么,我只是得到一个空白的 mp3 文件 (0 kb)。

我的目的是从外部服务器下载各种文件,并将它们保存到我的 iPhone 的 tmp 目录中......我什至不关心它们在那时被加载。我设法将文件下载到我的 iPhone 内存中,但我似乎无法将它们保存在我的 iPhone 磁盘上..!

请点灯?

【问题讨论】:

fr.writeBytes(btAr) 之前添加一个trace( btAr.length );。我的猜测不是你保存不正确,而是你保存的是一个空的 ByteArray。 你是对的 Apocalyptic0n3 !我的字节数组确实是空的.. 问题.. ByteArray 是我可以保存文件的唯一格式吗?如果是这样,将 mp3s、jpgs 转换为字节数组的正确方法是什么? 问题已解决...我使用的是 mp3sound.length 而不是 snd.length...!愚蠢的错误..!谢谢大家的回复......! 【参考方案1】:

试试看:

 var outFile:File = File.applicationStorageDirectory.resolvePath("myCache.mp3");
 var outStream:FileStream = new FileStream();
 outStream.open(outFile, FileMode.WRITE);
 outStream.writeBytes(btAr);
 outStream.close();

需要保存在applicationStorageDirectory中!

【讨论】:

不正确,这是我们正在使用的 iOs 环境.. 我知道我的目录是正确的..!我已经用这些目录工作了很多次..!还是谢谢!

以上是关于如何在 iOs 或 Android air 项目 (AS3) 上将下载的资产保存到磁盘的主要内容,如果未能解决你的问题,请参考以下文章

Flash to AIR to Testflight for android 和 iOS。如何实现 Testflight SDK?

如何使用 C# 为 Windows 构建 AIR 本机扩展?

调试设备上的iOS / AIR内容

我如何知道或定义主 Activity (AIR for Android)

iOS 上的 Flash/AIR 舞台视频 - 有可能吗?表现如何?

如何在 Adob​​e AIR 中检测 Android 操作系统版本?