【问题标题】:Writing to file in Mozilla Firefox extension - strange error在 Mozilla Firefox 扩展中写入文件 - 奇怪的错误
【发布时间】:2011-07-10 22:37:08
【问题描述】:

我正在尝试开发一个 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 等)和返回的对象的类型完全相同。

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

【问题讨论】:

标签: javascript firefox-addon mozilla


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多