原来写过一个File类,这个类的作用就是在Extension中读写本地文件,不过作为浏览器插件,读写本地文件到磁盘就会有一些很不好的问题,这些问题可以总结如下。
- 写文件要写绝对路径。
- 不同操作系统有不同的路径。
- 卸载插件的时候需要手动找到路径删除。
这三点是非常麻烦的,也会造成后期的维护的困难。当然,我们希望的是用户卸载插件的时候连同配置文件一起删除,读写文件也写到安装包路径中。
在Firefox中,有一个XPCOM可以解决这个问题,我们可以通过以下代码获取路径。
const id = "test@test.com";
var extension = Components.classes["@mozilla.org/extensions/manager;1"]
.getService(Components.interfaces.nsIExtensionManager)
.getInstallLocation(id)
.getItemLocation(id);
然后,我们可以通过相应的IO类去进行文件的读写,代码如下。
var io = new jguoer.IO();
var file = io.open(extension.path+"\\file.txt");
io.write(file,"test");
alert(io.read(file));
同样,附上我写的IO类,可以读写文件以及进行一些编码转换,代码我就不贴出来了,好的命名已经解释了一切了。
IO.rar (1.45 kb)
Firefox Addon
firefox, 扩展, 开发, io, 文件, 读写