Firefox 还不支持通过 File API 写入文件,即使添加了它,它也可能只能被网页访问,而不能被扩展访问。换句话说:是的,如果您绝对需要写入文件,那么您应该使用低级 API。您希望将数据存储在用户配置文件目录中(没有扩展目录,您的扩展通常安装为单个打包文件)。像这样的东西应该可以写一个文件:
var file = require("sdk/io/file");
var profilePath = require("sdk/system").pathFor("ProfD");
var filePath = file.join(profilePath, "foo.txt");
var writer = file.open(filePath, "w");
writer.writeAsync("foo!", function(error)
{
if (error)
console.log("Error: " + error);
else
console.log("Success!");
});
供参考:sdk/io/file
,sdk/system
您可以使用TextReader.read()
或file.read()
读取文件。不幸的是,附加 SDK 似乎不支持异步文件读取,因此读取会阻止 Firefox UI。唯一的选择是通过 chrome 权限导入NetUtil和FileUtils ,如下所示:
var {components, Cu} = require("chrome");
var {NetUtil} = Cu.import("resource://gre/modules/NetUtil.jsm", null);
var {FileUtils} = Cu.import("resource://gre/modules/FileUtils.jsm", null);
NetUtil.asyncFetch(new FileUtils.File(filePath), function(stream, result)
{
if (components.isSuccessCode(result))
{
var data = NetUtil.readInputStreamToString(stream, stream.available());
console.log("Success: " + data);
}
else
console.log("Error: " + result);
});