2012-03-12 4 views

答えて

4

は、私が興味を持っている人のための解決策を見つけた:

getLocalDirectory : function() { 
    let directoryService = Cc["@mozilla.org/file/directory_service;1"].getService(Ci.nsIProperties); 
    let localDir = directoryService.get("ProfD", Ci.nsIFile); 
    localDir.append("FolderName"); 
    if (!localDir.exists() || !localDir.isDirectory()) 
     localDir.create(Ci.nsIFile.DIRECTORY_TYPE, 0774); 
    return localDir; 
}, 

writeFile: function(data) { 
    let myFile = lbbs.files.getLocalDirectory(); 
    myFile.append("FileName.txt"); 
    if (myFile.exists() == false) 
     myFile.create(Ci.nsIFile.NORMAL_FILE_TYPE, 0774); 
    Components.utils.import("resource://gre/modules/NetUtil.jsm"); 
    Components.utils.import("resource://gre/modules/FileUtils.jsm"); 
    var ostream = FileUtils.openSafeFileOutputStream(myFile) 
    var converter = Components.classes["@mozilla.org/intl/scriptableunicodeconverter"]. 
    createInstance(Components.interfaces.nsIScriptableUnicodeConverter); 
    converter.charset = "UTF-8"; 
    var istream = converter.convertToInputStream(data); 
    NetUtil.asyncCopy(istream, ostream, function(status) { 
     if (!Components.isSuccessCode(status)) 
      return; 
    }); 
}, 

readFile: function() { 
    let myFile = lbbs.files.getLocalDirectory(); 
    myFile.append("FileName.txt"); 
    if (myFile.exists() == false) 
     myFile.create(Ci.nsIFile.NORMAL_FILE_TYPE, 0774); 
    var data = ""; 
    var fstream = Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream); 
    var cstream = Components.classes["@mozilla.org/intl/converter-input-stream;1"].createInstance(Components.interfaces.nsIConverterInputStream); 
    fstream.init(myFile, -1, 0, 0); 
    cstream.init(fstream, "UTF-8", 0, 0); 
    let (str = {}) { 
     let read = 0; 
     do { 
      read = cstream.readString(0xffffffff, str); 
      data += str.value; 
     } while (read != 0); 
    } 
    cstream.close(); 
    return data; 
}, 

ファイルを今に作成され
:%USER_PROFILE%\のAppData \ローミング\ Mozilla \ Firefox \ Profiles \と\フォルダ\ファイル名.txt aamu4bzq.default

6

XULはマークアップ言語であり、これを使用してユーザーインターフェイスを作成します。ファイルへの書き込みなどを行うには、XPCOMを使用します。他のすべてのドキュメントに記載されています:

一般ドキュメント:FileUtils.jsmNetUtil.jsmFile I/O code snippets

+0

ありがとうございますが、作成したファイルのパスを指定する方法はありますか? –

+2

@AshrafBashir:上の最初のリンクから: 'var f = new FileUtils.File(" c:\\ data ");' –

1

私は、アプリケーションの外部フォルダを作成するときに問題があるだろうと思いますベースディレクトリ。
例: - C:\ TEMP内にフォルダを作成する場合、失敗する可能性があります。

+0

はい、そうです、アクセスは指定されたパスに制限されています。 –

関連する問題