将嵌入文件从“assets”复制到File.applicationStorageDirectory

时间:2012-04-18 12:01:12

标签: flex

我需要将我嵌入项目“assets”文件夹中的一些图像复制到File.applicationStorageDirectory位置,但我不知道如何操作(实际上我不知道如何访问嵌入式文件使用File对象实例)...

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

根据我在评论中的建议,显然嵌入式资产默认不会序列化为ByteArray。例如,图像被序列化为BitmapAsset类。

[Embed(source="sourceImg.png")]
private var MyImage:Class;

对于这个嵌入你可以这样做:

var bmp:BitmapAsset = new MyImage();

有一些技术可以将BitmapAsset转换为ByteArray,但也有一种更简单的方法:如果在embed指令中将类型设置为'octetstream',它会立即序列化为ByteArrayAsset类,这是ByteArray的子​​类。所以你可以这样做:

[Embed(source="sourceImg.png", mimeType="application/octet-stream")]
private var MyImage:Class;

var bytes:ByteArray = new MyImage();

现在您需要做的就是使用FileStream将ByteArray写入磁盘:

var file:File = File.desktopDirectory.resolvePath('targetImage.png');
var fs:FileStream = new FileStream();
fs.open(file, FileMode.WRITE);
fs.writeBytes(bytes);
fs.close();

这就是它的全部内容。