没有覆盖的javascript写文件(Javascript write file without o

2019-10-17 15:28发布

我使用XPCOM来阅读我的硬盘驱动器/写文件(S)(从Java不再支持FF16,17,18,+我都用这个)。 我用它在我的Firefox扩展(S)(我用的iMacros)。 在这个文件点击我发现了这个例子。

var string = '\u5909\u63db\u30c6\u30b9\u30c8';
file.initWithPath('C:\\temp\\temp.txt');
file.create(file.NORMAL_FILE_TYPE, 0666);
var charset = 'EUC-JP';
var fileStream = Components
.classes['@mozilla.org/network/file-output-stream;1']
.createInstance(Components.interfaces.nsIFileOutputStream);
fileStream.init(file, 2, 0x200, false);
var converterStream = Components
.classes['@mozilla.org/intl/converter-output-stream;1']
.createInstance(Components.interfaces.nsIConverterOutputStream);
converterStream.init(fileStream, charset, string.length,
Components.interfaces.nsIConverterInputStream.DEFAULT_REPLACEMENT_CHARACTER);
converterStream.writeString(string);
converterStream.close();
fileStream.close();

所以这个代码执行下列操作。 如果文件不存在,它会创建它,它保存数据。 但是,如果文件不存在,它会返回错误。 如果我评论的那部分代码(和文件存在),它只会覆盖旧数据,并换上新的。

我需要这个代码来创建文件,如果它存在只是移动上没有一个错误,并保存在新线路上的数据而不会覆盖。

像这样。

之前:

data11, data12, data13
data21, data22, data23

后:

data11, data12, data13
data21, data22, data23
data31, data32, data33
data41, data42, data43

Answer 1:

尝试通过18作为第二个参数时初始化输出流(而不是2)。

fileStream.init(file, 18, 0x200, false);

其将所述PR_APPEND标志到IO模式参数(这是0x10 ;所述2是用于PR_WRONLY )。



文章来源: Javascript write file without overwrite