2012-03-12 4 views

Répondre

4

J'ai trouvé la solution pour ceux qui sont intéressés:

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; 
}, 


Le fichier est créé dans:% profil_utilisateur% \ AppData \ Roaming \ Mozilla \ Firefox \ Profiles \ aamu4bzq.default \ FolderName \ FileName.txt

6

XUL est un langage de balisage, vous l'utilisez pour créer une interface utilisateur. Pour faire des choses comme écrire dans des fichiers, vous utiliseriez XPCOM. Tout le reste se trouve dans la documentation:

Documentation générale: FileUtils.jsm, NetUtil.jsm, File I/O code snippets

+0

Merci, mais comment spécifier le chemin du fichier créé? –

+2

@AshrafBashir: Du premier lien ci-dessus: 'var f = new FileUtils.File (" c: \\ data ");' –

1

Je pense qu'il y aura problème lors de la création du dossier en dehors de l'application répertoire de base.
Par exemple: - si vous voulez créer un dossier dans C: \ TEMP, il peut échouer

+0

Oui, vous avez raison, l'accès est uniquement limité au chemin donné. –