1

我正在尝试将文本文件从一个文件夹复制到另一个文件夹。问题是一旦您选择要保存到的文件夹,将文件复制到该文件夹​​的正确代码是什么?我和使用 NSI Filepicker modeOpen 和 modeSave 并且找不到任何关于如何正确保存文件的代码。MDN 缺少代码。

     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!")       
4

1 回答 1

0

使用 fp.file 创建流,参见 https://developer.mozilla.org/en/Code_snippets/File_I%2F%2FO#Synchronous

不过,我有一个问题要问你,“窗口”是从哪里fp.init(window定义的?

于 2012-05-14T18:27:00.023 回答