2012-03-22 74 views
1

我想將文本文件從一個文件夾複製到另一個文件夾。問題一旦你選擇文件夾保存到什麼是正確的代碼來獲取文件複製到該文件夾​​?我和使用NSI文件選擇器modeOpen和modeSave,並找不到任何關於如何正確保存文件的代碼。 MDN缺乏代碼。任何人都知道如何正確使用nsIFilePicker?

 var dispdir = Components.classes["@mozilla.org/file/directory_service;1"]. 
    getService(Components.interfaces.nsIProperties). 
    get("ProfD", Components.interfaces.nsIFile);  


    var nsIFilePicker = Components.interfaces.nsIFilePicker; 
    var fp = Components.classes["@mozilla.org/filepicker;1"] 
    .createInstance(nsIFilePicker); 
    fp.init(window, "Select a File", nsIFilePicker.modeOpen); 
    fp.appendFilters(nsIFilePicker.filterText); 
    fp.displayDirectory = dispdir; 


    var rv = fp.show(); 
    if (rv == nsIFilePicker.returnOK || rv == nsIFilePicker.returnCancel) { 
     var file = fp.file; 
     var path = fp.file.path; 

    } 


    var savedir = Components.classes["@mozilla.org/file/directory_service;1"]. 
    getService(Components.interfaces.nsIProperties). 
    get("ProfD", Components.interfaces.nsIFile);  
    savedir.append("Test Folder"); 


    if(!savedir.exists() || !savedir.isDirectory()) { 
      // if it doesn't exist,create 
     savedir.create(Components.interfaces.nsIFile.DIRECTORY_TYPE, 0777); 
     alert(savedir.path + "\n" + "Folder was made"); 

    } 


    var fp2 = Components.classes["@mozilla.org/filepicker;1"] 
      .createInstance(nsIFilePicker); 
    fp2.init(window, "Save file to?", nsIFilePicker.modeSave); 
    fp2.appendFilters(nsIFilePicker.filterText); 
    fp2.displayDirectory = savedir; 
    fp2.defaultString = fp.file.leafName; 

    var rv = fp2.show(); 
    if (rv == nsIFilePicker.returnOK || rv == nsIFilePicker.returnReplace) { 


    } 

    var aDir = Components.classes["@mozilla.org/file/local;1"] 
     .createInstance(Components.interfaces.nsILocalFile); 
    aDir.append(fp2.file.parent.path);  



    alert(fp2.file.parent.path) 
    fp.file.copyTo(aDir, null); 

    copyFile(fp.file.path); 
    alert(fp2.file.path + "\n" + "File copied successfuly!")  

回答

相關問題