Расширение файла Firefox 4: исключение file.createUnique: NS_ERROR_FAILURE - PullRequest
0 голосов
/ 20 июня 2011

Я разработал расширение 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 голосов
/ 22 июня 2011

Ваш код работает правильно для меня, здесь нет проблем. Кажется, что Firefox по какой-то причине не может создать файл и не распознает возвращенный код ошибки Windows (он знает только коды ошибок, перечисленные в http://mxr.mozilla.org/mozilla-central/source/xpcom/io/nsLocalFileWin.cpp#240).. Вероятно, лучше всего попытаться создать файл вручную, например, с Блокнотом - я думаю, что вы также получите ошибку там, но с более информативным сообщением.

...