Страницы: 1
Добрый день.
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); //Активируем
Вопрос - можно ли удалить папку?
По крайней мере этим же кодом сделать этого не получилось. Подозреваю что все дело в .nsILocalFile, но чего-то похожего на .nsILocalFolder не нашел.
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;}}
Можно ли открыть такое же стандартное окно, но для выбора не файла, а папки?
Иначе приходится выбирать файл в нужной папке, а потом обрезать строку. Плюс возникает проблема, если в нужной папке нет файлов которые можно вручную выбрать.
Отредактировано Medison1 (06-09-2015 14:52:23)
Отсутствует
Сейчас попробовал на FF40.
Папка была выбрана и удалена без проблем.
var picker = window.makeFilePicker(); picker.init(window, "", picker.modeGetFolder); picker.open(result => result == picker.returnOK && picker.file.remove(true));
Отредактировано Dumby (06-09-2015 17:52:01)
Отсутствует
Код работает. Но не до конца его понимаю. Можете его объяснить для повышения уровня образованности?
К примеру я так понял, что .open это метод для открывания окна, аналог которого .show() и который сейчас не рекомендуется использовать?
А как прочитать вот эти условия? (result => result == picker.returnOK && picker.file.remove(true))
Перевел этот код в аналогичный, но более понятный для меня:
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, а как это сделать в вашем коде?
И самое главное! Можно ли как-то удалить папку просто подставив путь, т.е. без ее выбора в окне пользователем?
Файл так можно удалить. При удалении файла я использую .initWithPath(delpath), но как это прикрутить к папке...
Задать .file.path через переменную так же не удается, видимо нужно использовать только как-то с init....
Отсутствует
К примеру я так понял, что .open это метод для открывания окна, аналог которого .show() и который сейчас не рекомендуется использовать?
Да.
А как прочитать вот эти условия? (result => result == picker.returnOK && picker.file.remove(true))
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);
Отсутствует
Страницы: 1