>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Разработка http://forum.mozilla-russia.org/viewforum.php?id=18 >Удалить файл/папку ; Выбрать файл/папку http://forum.mozilla-russia.org/viewtopic.php?id=68245 |
Medison1 > 06-09-2015 14:51:24 |
Добрый день. 1) Можно удалить файл, используя код: Выделить код Код:function delete_file_by_path(delpath) {var file = Components.classes['@mozilla.org/file/local;1'].createInstance(Components.interfaces.nsILocalFile); file.initWithPath(delpath); if (file.exists()) file.remove(false);} delete_file_by_path (delpath); //Активируем Вопрос - можно ли удалить папку? 2) Так же к примеру мне нужно открыть стандартное окно для выбора файла, чтобы получить путь к файлу. Это делаю кодом: Выделить код Код:var chosenpath; // В этой переменной будет путь к файлу function getpatch(dialogtitle) {var nsIFilePicker = Components.interfaces.nsIFilePicker; var fp = Components.classes["@mozilla.org/filepicker;1"] .createInstance(nsIFilePicker); fp.init(window, dialogtitle, nsIFilePicker.modeOpen); var rv = fp.show(); if (rv == nsIFilePicker.returnOK) {chosenpath = fp.file.path;}} Можно ли открыть такое же стандартное окно, но для выбора не файла, а папки? |
Dumby > 06-09-2015 17:11:25 |
Сейчас попробовал на FF40. Выделить код Код:var picker = window.makeFilePicker(); picker.init(window, "", picker.modeGetFolder); picker.open(result => result == picker.returnOK && picker.file.remove(true)); |
Medison1 > 07-09-2015 16:26:06 |
Код работает. Но не до конца его понимаю. Можете его объяснить для повышения уровня образованности? К примеру я так понял, что .open это метод для открывания окна, аналог которого .show() и который сейчас не рекомендуется использовать? Перевел этот код в аналогичный, но более понятный для меня: Выделить код Код:var nsIFilePicker = Components.interfaces.nsIFilePicker; var foldp = Components.classes["@mozilla.org/filepicker;1"].createInstance(Components.interfaces.nsIFilePicker); foldp.init(window, "", nsIFilePicker.modeGetFolder); var rav = foldp.show(); if (rav == nsIFilePicker.returnOK) { foldp.file.remove(true);} В нем я могу записать в переменную выбранный путь .file.path, а как это сделать в вашем коде? И самое главное! Можно ли как-то удалить папку просто подставив путь, т.е. без ее выбора в окне пользователем? |
Dumby > 07-09-2015 19:07:29 |
Да.
Arrow functions, && (Флэнаган).
У меня удаляется. Выделить код Код:var path = "D:\\test"; var file = Components.Constructor("@mozilla.org/file/local;1", "nsILocalFile", "initWithPath")(path); if (file.exists() && file.isDirectory()) file.remove(true); |