File的nativePath和url再深一层的应用以及理解


前段时间写过 一篇日志 ,有提过mac下air的一个api:File.url。
打那次之后,我操作到文件url时全部都用url这个属性,不过最近发现一个问题

当对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/

你可能感兴趣的:(File的nativePath和url再深一层的应用以及理解)