1

Firefoxの拡張機能を作成しています。拡張機能で「file:///home/blahblah/foo.txt」のようなファイルを開き、このファイルのコンテンツをテキスト領域に配置したいと思います。ファイル「http://」では簡単ですが、「file://」ではできません。

4

2 に答える 2

1

ローカルファイルを操作するときは、実際にそれらを「ロード」する必要があります:

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

fileContent にはコンテンツが文字列として含まれています

于 2009-08-17T20:17:36.103 に答える
0

(ローカル パスや nsIFile オブジェクトではなく) ファイルの URI 文字列がある場合は、XMLHttpRequest を使用してファイルの内容を読み取ることもできます。

于 2009-10-01T19:18:13.097 に答える