Кому-нибудь удалось убедить XPCOM сделать запись с добавлением в локальный файл? Блок кода ниже отлично работает с 0x08 (создать, если не существует) в флагах. Но 0x10, добавить в конец существующего файла просто, самолет не работает! Также привилегированные биты 0666 не имеют. Файл всегда создается 0644.
Components.utils.import("resource://gre/modules/FileUtils.jsm");
var Cc=Components.classes;
var Ci=Components.interfaces;
function writeFile(fileName,data){
var file = FileUtils.getFile("Home", [fileName]);
var fileStream=FileUtils.openSafeFileOutputStream(file, 0x02 | 0x10 | 0x20, 0666, 0);
// ^^^^ does not work! 0x08 does.
fileStream.write(data,data.length);
FileUtils.closeSafeFileOutputStream(fileStream);
}
Я пытался открыть поток без использования FileUtils. Как это:
var fileStream = Cc["@mozilla.org/network/safe-file-output-stream;1"].
createInstance(Ci.nsIFileOutputStream);
fileStream.init(file, 0x02 | 0x10 | 0x20, 0666, 0);
С точно такими же результатами.
Я запускаю код под XULRunner 1.9.2, распространяемый вместе с XUL Explorer 1.0a1pre, Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.17) Gecko/20110421
.
Любые подсказки будут очень признательны.