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 に答える