2009-08-17 20 views
1

私はfirefoxの拡張機能を作成しています。私は自分の拡張機能に "file:///home/blahblah/foo.txt"のようなファイルを開き、テキスト領域にあります。ファイル「のhttp://」とその簡単な、しかし、私は、「ファイル://」でこれを行うカントURIを使用してnsIFileオブジェクトを作成する方法

+0

読み込みたいファイル:URIがあり、そのためにnsIFileオブジェクトが必要だと言っていますか? – sdwilsh

答えて

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が含まれています文字列としての内容

+1

これは非ASCII文字を処理しないことに注意してください。ここには簡単な方法も記載されています: https://developer.mozilla.org/index.php?title=en/Code_snippets/File_I%2F%2FO#Simple – sdwilsh

0

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

関連する問題