Javascript写文件而不覆盖

Javascript写文件而不覆盖,javascript,firefox,filestream,xpcom,imacros,Javascript,Firefox,Filestream,Xpcom,Imacros,我正在使用XPCOM读取/写入硬盘上的文件(因为FF16、17、18不再支持Java,+我必须使用它)。我在FireFox扩展中使用它(我使用iMacro)。在这个文档中,我找到了这个例子 var string = '\u5909\u63db\u30c6\u30b9\u30c8'; file.initWithPath('C:\\temp\\temp.txt'); file.create(file.NORMAL_FILE_TYPE, 0666); var charset = 'EUC-JP'; v

我正在使用XPCOM读取/写入硬盘上的文件(因为FF16、17、18不再支持Java,+我必须使用它)。我在FireFox扩展中使用它(我使用iMacro)。在这个文档中,我找到了这个例子

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

尝试在初始化输出流时将
18
作为第二个参数传递(而不是2)


这会将
PR\u APPEND
标志添加到io模式参数中(它是
0x10
2
仅用于
PR\u WRONLY
)。

尝试在初始化输出流时将
18
作为第二个参数传递(而不是2)


这将在io模式参数中添加
PR\u APPEND
标志(它是
0x10
2
仅用于
PR\u WRONLY
)。

作业正常。我们将很快报告它的工作原理。好的,它工作了,写了,但不完全是。当我试图创建已有的文件时,仍然会出现错误,数据不会移动到新行,而是写入现有文本的同一行。这可以通过converterStream.writeString(“\n”)解决;在写正文之前。如何解决创建文件的错误?工作正常。我们将很快报告它的工作原理。好的,它工作了,写了,但不完全是。当我试图创建已有的文件时,仍然会出现错误,数据不会移动到新行,而是写入现有文本的同一行。这可以通过converterStream.writeString(“\n”)解决;在写正文之前。如何解决创建文件的错误?
fileStream.init(file, 18, 0x200, false);