Firefox 4 扩展文件。创建唯一异常:NS_ERROR_FAILURE

Posted

技术标签:

【中文标题】Firefox 4 扩展文件。创建唯一异常:NS_ERROR_FAILURE【英文标题】:Firefox 4 extension file.createUnique exception: NS_ERROR_FAILURE 【发布时间】:2011-09-18 13:43:24 【问题描述】:

我开发了一个 Firefox 扩展程序,它收集一些数据并将它们保存到桌面上的文件中。

它在 Mac OS 上运行良好,但在 Windows 7 上,创建文件时会引发错误。 例外:

uncaught exception:[Exception... "Component returned failure code:0x80004005(NS_ERROR_FAILURE)[nsIFile.createUnique]" nsresult:"0x80004005 (NS_ERROR_FAILURE)" location: "JS frame::chrome://klmlogger/content/record.js :: <TOP_LEVEL> :: line 59" data: no]

代码在这里:

    var file = Components.classes["@mozilla.org/file/directory_service;1"]
                         .getService(Components.interfaces.nsIProperties)
                         .get("Desk", Components.interfaces.nsIFile);
    file.append("samplefile.txt");
    file.createUnique(Components.interfaces.nsIFile.NORMAL_FILE_TYPE, 0666); // Line 59

如果我删除第 59 行(它仍然适用于 Mac OS),错误变为:

Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIFileOutputStream.init]
resource://gre/modules/FileUtils.jsm           Line: 86

错误发生在这里:

if (modeFlags === undefined)
  modeFlags = this.MODE_WRONLY | this.MODE_CREATE | this.MODE_TRUNCATE;
fos.init(file, modeFlags, this.PERMS_FILE, 0);      // Line 86
return fos;

【问题讨论】:

【参考方案1】:

您的代码对我来说可以正常工作,这里没有问题。 Firefox 似乎由于某种原因无法创建文件,并且无法识别返回的 Windows 错误代码(它只知道http://mxr.mozilla.org/mozilla-central/source/xpcom/io/nsLocalFileWin.cpp#240 下列出的错误代码)。如果您尝试手动创建文件可能是最好的,例如使用记事本 - 我想您也会在此处收到错误消息,但会显示更多信息。

【讨论】:

如果文件已经存在,则代码运行良好。但就我而言,我必须动态创建文件。而且我无法获得更多有用的错误消息。

以上是关于Firefox 4 扩展文件。创建唯一异常:NS_ERROR_FAILURE的主要内容,如果未能解决你的问题,请参考以下文章

Firefox 84.0 正在更改下载文件的自定义文件扩展名

项目一众筹网03_3_管理员维护_新增_保证每个用户的账号唯一_唯一约束_怎么得知原数据里面有没有重复的_MD5加密_生成创建时间_异常类处理

Firefox 网络扩展 - 读取本地文件(最后下载的文件)

FireFox火狐备份配置书签密码扩展文件方法

NS_ERROR_FAILURE : Firefox 失败

Mongodb 唯一索引