javascript - 如何使用 URI 创建 nsIFile 对象

标签 javascript firefox-addon mozilla xpcom

我正在为 Firefox 制作扩展,我希望我的扩展打开一个像“file:///home/blahblah/foo.txt”这样的文件,然后将该文件的内容放入文本区域。使用文件“http://”很容易,但我不能使用“file://”来做到这一点

最佳答案

当处理本地文件时,你必须非常“大声”:

    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();

文件内容包含字符串形式的内容

关于javascript - 如何使用 URI 创建 nsIFile 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1289927/

相关文章:

javascript - 如何使用javascript求数组元素之和?

javascript - 在 PageMod Firefox 中获取 Angular 范围

javascript - 使用 window.location.href 更改 URL 后如何知道 DOM 何时再次准备就绪

javascript - jQuery 仅适用于 firefox 或 safari/chrome 控制台

java - 用于屏幕抓取的 Mozilla 解析器

html - 使用 CSS 清除 <select> 元素的下拉按钮的背景

JavaScript 得分值没有增加

javascript - html 表单验证(使用 jquery.validate.js)在某些情况下不起作用

javascript - 当 javascript 数据标签用于操作 AJAX 成功的 dom 值时得到错误的值

javascript - 将 Firefox 扩展与 C# 应用程序连接