Кто-нибудь знает, как правильно использовать nsIFilePicker? - PullRequest
1 голос
/ 22 марта 2012

Я пытаюсь скопировать текстовый файл из одной папки в другую.Проблема заключается в том, что после того, как вы выбрали папку для сохранения, какой код является правильным для получения файла для копирования в эту папку?Я и использую 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!")       

1 Ответ

0 голосов
/ 14 мая 2012

Используйте fp.file для создания потока, см. https://developer.mozilla.org/en/Code_snippets/File_I%2F%2FO#Synchronous

У меня есть вопрос к вам, где определено 'окно' из fp.init(window?

...