繁体   English   中英

在 Mozilla Firefox 扩展中写入文件 - 奇怪的错误

[英]Writing to file in Mozilla Firefox extension - strange error

我正在尝试开发 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] 但是此错误消息没有任何意义,因为这是所有错误中最常见的错误。 这很奇怪,因为唯一的区别是文件 object 的初始化方式,但在这两种方式中,初始化参数(文件名、prems 等)和返回的对象的类型完全相同。

如果有人对此提供一些线索,将不胜感激。

@sdwilsh 在上面提出了很好的观点。 不幸的是,这个问题要简单得多,而且很愚蠢。 它位于单个反斜杠和过于笼统的错误消息中。 我提供的路径带有单个反斜杠,它被解释为转义符号,实际上该字符串不再是有效路径。 用 '\' 替换 '\' 解决了这个问题。 所以这是一个非常简单的问题,但真的应该更多地关注细节。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM