作者heerodream (我想当坏人)
看板Flash
标题Re: [问题] 关於将ByteArray存成档案的问题
时间Wed Aug 11 18:55:33 2010
※ 引述《heerodream (我想当坏人)》之铭言:
: 之前问过一个画面抓图存档的问题
: 想自己写一个储存ByteArray成档案的程式
: 现在我用BitmapData.draw()函数抓下BitmapData
: 然後使用JpgEncoder的函数後 转成ByteArray
: 我想将ByteArray储存成档案
: 之前是用FileReference.save()来做
: 因为考虑到AIR1.0不支援save()函数且旧版Flash player也不支援
: 然後也不希望在储存档案的时候会跳出选择资料夹的视窗
: 使用者只要按一个钮 图片就会存到程式指定的路径了
: 如果是要自己写要怎麽做呢?
: 希望的功能是
: 呼叫这个函数时 可将指定的ByteArray存成档案到硬碟中
: 并且 路径和档名是写在程式的变数中
自问自答...
刚试出来了
不过是用AIR 1.0提供的FileStream类别
CODE如下:
//Air执行档所在的绝对路径
var rootFolder:String=File.applicationDirectory.nativePath;
//抓今天日期
var nowDate:String=
new Date().fullYear.toString()+"_"+new Date().month.toString()+
"_"+new Date().date.toString();
//宣告档名
var name:String="1234.jpg"
//用今天日期当作资料夹名称
var folder:String="\/"+nowDate+"\/";
//宣告一个空壳目标档案 存放在rootFolder+folder+name路径中
var targetFile:File =
File.documentsDirectory.resolvePath(rootFolder+folder+name);
//存档路径档案的parent确认是否存在 若不存在则建立新增料夹rootFolder+folder
var targetParent:File = targetFile.parent;
targetParent.createDirectory();
//将ByteArray经由writeBytes方法 存成一个实体档案
var stream:FileStream = new FileStream();
//先打开一个空壳File,设定mode为写入
stream.open(targetFile, FileMode.WRITE)
//写入ByteArray成档案
stream.writeBytes(imgByteArray);
//关闭FileStream
stream.close();
这样可以将撷下来的图存到AIR主程式目录下的指定位置
并且不会跳出 选择档案位置 的对话框
如果不用FileStream这个类别的做法 我目前还不知道怎麽做...
(我是在记事本打好再贴上来的...)
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.113.216.75
※ 编辑: heerodream 来自: 140.113.216.75 (08/11 18:57)