Я пытаюсь разработать расширение для Firefox. Просто для начала я пытаюсь записать в файл, но получаю очень странное и необъяснимое поведение.
этот код работает:
var file = showFilePicker(window,"saveTestCaseAs",
Components.interfaces.nsIFilePicker.modeSave,
Format.TEST_CASE_DIRECTORY_PREF,
function(fp) {return fp.file;});
var foStream = Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream);
foStream.init(file1, 0x02 | 0x08 | 0x20, 438, 0);
var converter = Components.classes["@mozilla.org/intl/converter-output-stream;1"].
createInstance(Components.interfaces.nsIConverterOutputStream);
converter.init(foStream, "UTF-8", 0, 0);
converter.writeString("test string");
converter.close();
а этот нет:
var file1 = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
file1.initWithPath("C:\Documents and Settings\XPMUser\Desktop\test.t");
var foStream = Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream);
// use 0x02 | 0x10 to open file for appending.
foStream.init(file1, 0x02 | 0x08 | 0x20, 438, 0);
var converter = Components.classes["@mozilla.org/intl/converter-output-stream;1"].
createInstance(Components.interfaces.nsIConverterOutputStream);
converter.init(foStream, "UTF-8", 0, 0);
converter.writeString("test string");
converter.close(); // this closes foStream
Сообщение об ошибке: Ошибка: Компонент вернул код ошибки: 0x80004005 (NS_ERROR_FAILURE) [nsIFileOutputStream.init]. Однако это сообщение об ошибке ничего не значит, поскольку это самая общая ошибка из всех. это очень странно, потому что единственная разница заключается в том, как инициализируется файловый объект, но в обоих случаях параметры инициализации (имя файла, prems и т. д.) и тип возвращаемого объекта абсолютно одинаковы.
Буду очень признателен, если кто-нибудь подскажет по этому поводу.