2012-03-12 17 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%\應用程序數據\漫遊\ Mozilla的\火狐\ Profiles文件\ aamu4bzq.default \文件夾\ FILENAME.TXT

6

XUL是一種標記語言,您可以使用它來創建用戶界面。要執行寫入文件等操作,您可以使用XPCOM。其他的一切可以在文檔中找到:

通用文檔:FileUtils.jsmNetUtil.jsmFile I/O code snippets

+0

謝謝,但是如何指定創建的文件的路徑? – 2012-03-13 10:07:58

+2

@AshrafBashir:從上面的第一個鏈接:'var f = new FileUtils.File(「c:\\ data」);' – 2012-03-13 10:24:40

1

我認爲在應用程序之外創建文件夾時,就會出現問題基本目錄。
例如: - 如果要在C:\ TEMP內創建文件夾,可能會失敗

+0

是的,你是對的,訪問只限於給定的路徑。 – 2012-03-23 11:40:18