firefox addon - 开发firefox addon,如何将数据保存到本地文件中
2011-04-11 11:38
856 查看
由于自己比较喜欢使用firefox的一个书签addon,但是总觉得功能有点不满足,所以决定自己修改一下。下载来它的源代码就开始。碰到一个核心的问题,就是如何写数据到本地文件。
我印象中记得,js作为一种客户端的脚本(大多数情况下),是没有这个权限的,所以觉得不太可能。但是后来想到每个插件都会有自己的配置信息,肯定要写到本地系统的。除此之外,有的 addon比如提供书签功能的,肯定要将用户的书签保存到本地文件。显然在插件中是可以做到的,虽然我不太确定是不是通过js,因为它有可能是通过firefox浏览器提供的xpcom API来操作的,或者通过其它的component来实现的。
我在mozilla上面找了不少资料,
You access the file system using Mozilla XPCOM components.
确认了保存数据到本地是可行的。
下面就是一个将数据保存到本地文件的示例:
setFileContent: function(file, str) {
try {
var fos = Components.classes['@mozilla.org/network/file-output-stream;1']
.createInstance(Components.interfaces.nsIFileOutputStream);
fos.init(file, 0x02 | 0x08 | 0x20, 0664, 0);
var os = Components.classes['@mozilla.org/intl/converter-output-stream;1']
.createInstance(Components.interfaces.nsIConverterOutputStream);
os.init(fos, 'UTF-8', 4096, Components.interfaces.nsIConverterInputStream.DEFAULT_REPLACEMENT_CHARACTER);
os.writeString(str);
os.close();
fos.close();
} catch(e) {
this.log(e);
}
}
参考:
https://developer.mozilla.org/en/Code_snippets/File_I%2F%2FO
http://stackoverflow.com/questions/2639400/where-firefox-extensions-store-data
https://developer.mozilla.org/en-US/search?q=Components.classes
我印象中记得,js作为一种客户端的脚本(大多数情况下),是没有这个权限的,所以觉得不太可能。但是后来想到每个插件都会有自己的配置信息,肯定要写到本地系统的。除此之外,有的 addon比如提供书签功能的,肯定要将用户的书签保存到本地文件。显然在插件中是可以做到的,虽然我不太确定是不是通过js,因为它有可能是通过firefox浏览器提供的xpcom API来操作的,或者通过其它的component来实现的。
我在mozilla上面找了不少资料,
You access the file system using Mozilla XPCOM components.
确认了保存数据到本地是可行的。
下面就是一个将数据保存到本地文件的示例:
setFileContent: function(file, str) {
try {
var fos = Components.classes['@mozilla.org/network/file-output-stream;1']
.createInstance(Components.interfaces.nsIFileOutputStream);
fos.init(file, 0x02 | 0x08 | 0x20, 0664, 0);
var os = Components.classes['@mozilla.org/intl/converter-output-stream;1']
.createInstance(Components.interfaces.nsIConverterOutputStream);
os.init(fos, 'UTF-8', 4096, Components.interfaces.nsIConverterInputStream.DEFAULT_REPLACEMENT_CHARACTER);
os.writeString(str);
os.close();
fos.close();
} catch(e) {
this.log(e);
}
}
// file is nsIFile, data is a string var otream = Components.classes["@mozilla.org/network/file-output-stream;1"]. createInstance(Components.interfaces.nsIFileOutputStream); // use 0x02 | 0x10 to open file for appending. otream.init(file, 0x02 | 0x08 | 0x20, 0666, ostream.DEFER_OPEN); // write, create, truncate var converter = Components.classes["@mozilla.org/intl/scriptableunicodeconverter"]. createInstance(Components.interfaces.nsIScriptableUnicodeConverter); converter.charset = "UTF-8"; var istream = converter.convertToInputStream(data); Components.utils.import("resource://gre/modules/NetUtil.jsm"); NetUtil.asyncCopy(istream, ostream);
参考:
https://developer.mozilla.org/en/Code_snippets/File_I%2F%2FO
http://stackoverflow.com/questions/2639400/where-firefox-extensions-store-data
https://developer.mozilla.org/en-US/search?q=Components.classes
相关文章推荐
- 用C#编程从数据库中读取图片数据导进Excel文件的方法(如何从数据库中读取保存的文件,直接打开,中间不保存到本地)
- 菜鸟求助:如何将用户数据保存到本地文件
- 嵌入式 如何使用jlink从flash中读取数据保存为bin文件到本地
- 用C#编程从数据库中读取图片数据导进Excel文件的方法(如何从数据库中读取保存的文件,直接打开,中间不保存到本地)
- Swift - 本地数据的保存与加载(使用NSCoder将对象保存到.plist文件)
- 关于使用java从http接口取数据保存到本地文件的中文乱码处理
- iOS开发-简单方法实现扒下网站html保存到本地文件
- 如何将任何文件类型数据保存到数据库中
- 【万里征程——Windows App开发】如何保存、读取、删除应用数据
- 如何把数据保存成16进制写入文件
- 【UWP开发】uwp如何在win10和xbox one本地保存存档
- Android将应用程序的崩溃信息如何保存到本地文件,并上传服务器
- Android游戏开发13:SQLite存储数据及保存SQLite数据库文件到SD卡
- Gadget桌面小工具开发如何长久保存数据
- 提高安卓APP开发效率、管理代码的架子(二):BaseProtocol(加载数据,访问本地, 访问服务器,保存本地)
- 如何将顶点数据保存为STL文件?
- Unity IniFile 保存游戏数据到本地文件
- html5开发之本地数据保存入门介绍-…
- Swift - 本地数据的保存与加载(使用NSCoder将对象保存到.plist文件)
- 数据存储之SQLite -- 如何查看数据库文件(基于AS开发工具)