如何在 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 本机扩展?
我如何知道或定义主 Activity (AIR for Android)