Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用URI创建nsIFile对象_Javascript_Firefox Addon_Mozilla_Xpcom - Fatal编程技术网

Javascript 如何使用URI创建nsIFile对象

Javascript 如何使用URI创建nsIFile对象,javascript,firefox-addon,mozilla,xpcom,Javascript,Firefox Addon,Mozilla,Xpcom,我正在为firefox做扩展,我想我的扩展打开一个文件,如“file:///home/blahblah/foo.txt“然后将此文件的内容放入文本区域。使用“http://”文件很容易,但使用“file://”文件时我无法做到这一点。使用本地文件时,您必须真正“加载”它们: fileContent以字符串形式包含内容在处理本地文件时,您必须真正“加载”它们: fileContent以字符串形式包含内容如果您有文件的URI字符串(而不是本地路径或nsIFile对象),那么您也可以使用XMLHttp

我正在为firefox做扩展,我想我的扩展打开一个文件,如“file:///home/blahblah/foo.txt“然后将此文件的内容放入文本区域。使用“http://”文件很容易,但使用“file://”文件时我无法做到这一点。

使用本地文件时,您必须真正“加载”它们:


fileContent以字符串形式包含内容

在处理本地文件时,您必须真正“加载”它们:


fileContent以字符串形式包含内容

如果您有文件的URI字符串(而不是本地路径或nsIFile对象),那么您也可以使用XMLHttpRequest读取文件内容。

如果您有文件的URI字符串(而不是本地路径或nsIFile对象)然后还可以使用XMLHttpRequest读取文件内容。

您是说您有一个要从中加载的file:URI,并且需要一个nsIFile对象吗?您是说您有一个要从中加载的file:URI,你需要一个nsIFile对象吗?应该注意的是,它不处理非ASCII字符。这里还记录了一种更简单的方法:应该注意,它不处理非ASCII字符。这里还记录了一种更简单的方法:
    var file = Components.classes["@mozilla.org/file/local;1"]
           .createInstance(Components.interfaces.nsILocalFile);
    file.initWithPath("/home/blahblah/foo.txt");
    if ( file.exists() == false ) {
        dup.value = “File does not exist”;
    }
    var istream = Components.classes["@mozilla.org/network/file-input-stream;1"]
        .createInstance(Components.interfaces.nsIFileInputStream);
    istream.init(file, 0x01, 4, null);
    var fileScriptableIO = Components.classes["@mozilla.org/scriptableinputstream;1"].createInstance(Components.interfaces.nsIScriptableInputStream); 
    fileScriptableIO.init(istream);
    // parse the xml into our internal document
    istream.QueryInterface(Components.interfaces.nsILineInputStream); 
    var fileContent = "";
    var csize = 0; 
    while ((csize = fileScriptableIO.available()) != 0)
    {
        fileContent += fileScriptableIO.read( csize );
    }
    fileScriptableIO.close();   
    istream.close();