Firefox 4扩展file.createUnique异常:NS_ERROR_FAILURE

时间:2011-06-20 10:02:22

标签: firefox firefox-addon firefox4 file-extension

我开发了一个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 个答案:

答案 0 :(得分:0)

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