前段时间写过 一篇日志 ,有提过mac下air的一个api:File.url。
var file:File = File.applicationDirectory.resolvePath(PConst.CONFIG_URL)
var fs:FileStream = new FileStream();
fs.open(file, FileMode.WRITE);
fs.position = 0;
fs.writeUTFBytes(PModelLocator.getInstance().configXml.toString());
fs.close();
上述问题代码是修改一个于安装目录下的config.xml,可是却抛出了一个错误:
SecurityError: fileWriteResource
at flash.filesystem::FileStream/open()
百度了一下,找到问题了,原来需要用到file的nativePath,问题解决,代码如下:
var file:File = new File(File.applicationDirectory.resolvePath(PConst.CONFIG_URL).nativePath)
var fs:FileStream = new FileStream();
fs.open(file, FileMode.WRITE);
fs.position = 0;
fs.writeUTFBytes(PModelLocator.getInstance().configXml.toString());
fs.close();
原因很简单,要用本地相对路径来操作安装目录下的文件,不能用绝对路径,看来mac上的nativePath不是全没用的。
BTW:
这个安全问题之前自己摸索了一下,一直找不到原因,于是想出了一个办法,把配置文件再拷贝一份到文稿目录下(windows则为我的文件)!
具体做法为:加载配置文件时,先判断一下文稿下面有没有这个配置文件,有则加载,反之,则load安装目录下面的默认配置文件,再写一个到文稿下面,以后的修改配置文件操作都是对文稿上的进行操作。
缺点:没有什么大缺点,代码多几行,文稿目录下多一个配置文件
优点:不对默认的配置文件进行修改,有一个默认的配置,如果想还原默认配置,可以删除文稿下面的配置文件
转载http://blog.163.com/sylar_lin/blog/static/19233209320119834552697/