我想通过 Thunderbird 插件对我的文件系统进行一些操作。例如,在特定位置创建一个文件夹,并在此文件夹中创建一个包含来自 Thunderbird 的一些数据的文本文件。
如您所知,Mozilla 扩展由 javascript 代码组成。所以我找了这个,找到了一些关于 ActiveXObject 的代码,这对 Thunderbird 不起作用。
有什么想法我应该怎么做?
我想通过 Thunderbird 插件对我的文件系统进行一些操作。例如,在特定位置创建一个文件夹,并在此文件夹中创建一个包含来自 Thunderbird 的一些数据的文本文件。
如您所知,Mozilla 扩展由 javascript 代码组成。所以我找了这个,找到了一些关于 ActiveXObject 的代码,这对 Thunderbird 不起作用。
有什么想法我应该怎么做?
首先,阅读一般扩展(Firefox 文档也适用于 Thunderbird,除了 Add-on SDK,它不适用于 Thunderbird;走 XUL 覆盖路线)。
然后有多种方法可以执行文件 I/O,特别是 XPCOM 的东西和OS.File
:
这是我的扩展程序中的代码片段。我在 Profile 目录中创建文本文件,然后在该文件中添加一些文本。
var path = Components.classes["@mozilla.org/file/directory_service;1"].getService( Components.interfaces.nsIProperties).get("ProfD", Components.interfaces.nsIFile).path + "\\";
var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
file.initWithPath(path);
file.append("settings.txt")
file.create(Components.interfaces.nsIFile.NORMAL_FILE_TYPE, 0664)
var outputStream = Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance( Components.interfaces.nsIFileOutputStream );
outputStream.init( file, 0x04 | 0x10, 0664, 0 );
var output = "some text here"
var result = outputStream.write( output, output.length );
outputStream.close();