![]() Интернет, компьютеры, софт и прочий Hi-Tech | ||
Избранные докиМетки (все метки)hi tech, internet, it, software, интернет, информационные технологии, ит, по, программное обеспечение, софт
Подписаться через RSS2Email.ru
|
Ввод и вывод из файла средствами XPCOMСодержание
Создание папокДля создания папки используйте ' var file = Components.classes["@mozilla.org/file/directory_service;1"]. getService(Components.interfaces.nsIProperties). get("ProfD", Components.interfaces.nsIFile); file.append("DIR"); if( !file.exists() || !file.isDirectory() ) { // если не существует, создаем file.create(Components.interfaces.nsIFile.DIRECTORY_TYPE, 0777); } В приведенном примере создается папка с названием "DIR", вложенная
в папку профайла. Дополнительную информацию можно найти в справке по Создание временных файловДля создания временного файла используйте
' var file = Components.classes["@mozilla.org/file/directory_service;1"]. getService(Components.interfaces.nsIProperties). get("TmpD", Components.interfaces.nsIFile); file.append("suggestedName.tmp"); file.createUnique(Components.interfaces.nsIFile.NORMAL_FILE_TYPE, 0666); // делаем все, что нужно с созданным файлом alert(file.path); Пользовательский ввод с помощью 'nsIFilePicker'Для открытия стандартных диалогов открытия/сохранения может быть использован
компонент выбора файла
'nsIFilePicker'. Он вызвращает выбранный пользователем файл в виде
' 'nsIFile' и строковые путиВы можете использовать ' Для получения URL файла используйте 'nsIIOService.newFileURI()': // файл как 'nsIFile' var ios = Components.classes["@mozilla.org/network/io-service;1"]. getService(Components.interfaces.nsIIOService); var URL = ios.newFileURI(file); // URL как 'nsIURI'. // Для получения строки вида "file://..." смотрите 'URL.spec' Для получения ' // URL как 'nsIURI'. // Смотрите 'nsIIOService::newURI' для получения строки из 'nsIURI'. var file = URL.QueryInterface(Components.interfaces.nsIFileURL).file; // теперь файл представлен как 'nsIFile' Загружая с 'file://', 'http://', 'chrome://', 'resource://' и других прямых URL, используйте 'XMLHttpRequest' или 'nsIChannel' (пример). Заметим также, что в большинстве случаев вам ненужно использовать
' Сохранение 'nsILocalFile' в преференцияхСледующие два пункта демонстрируют правильный способ сохранения файлового пути в пользовательских преференциях (более подробно о преференциях в Mozilla): Абсолютный путь ('nsILocalFile')Для сохранения произвольного пути в пользовательских преференциях, используйте следующий код: // 'file' должен быть 'nsILocalFile' // 1. Записываем путь в 'prefs' var prefs = Components.classes["@mozilla.org/preferences-service;1"]. getService(Components.interfaces.nsIPrefService). getBranch("extensions.myext."); prefs.setComplexValue("filename", Components.interfaces.nsILocalFile, file); // 2. Читаем путь из 'prefs' var file = prefs.getComplexValue("filename", Components.interfaces.nsILocalFile); Относительный путь ('nsIRelativeFilePref')Сохранение путей, относительных к какой-то определенной папке из перечисленных выше, продемонстрируем на примере путей, относительных к папке профайла. Для их сохранения используйте следующий код: // 1. Записываем в 'prefs' var relFile = Components.classes["@mozilla.org/pref-relativefile;1"]. createInstance(Components.interfaces.nsIRelativeFilePref); relFile.relativeToKey = "ProfD"; // или любая другая из перечисленных выше строк relFile.file = file; // 'file' должен быть 'nsILocalFile' prefs.setComplexValue("filename", Components.interfaces.nsIRelativeFilePref, relFile); // 2. Читаем из 'prefs' var value = prefs.getComplexValue("filename", Components.interfaces.nsIRelativeFilePref); // 'value.file' является сохраненным 'file'. Назад: Начало Перевод с английского: Д.Скоробогатов, 24.09.2010. Предыдущие публикации:
Последнее редактирование: 2010-10-15 10:54:31 Метки материала: com, программа, файл, mozilla, скрипты, браузер, программы для компьютера, программирование, javascript, ит, разработка программ, файловая система, xpcom, xulrunner, api, по, программное обеспечение, программы, софт, информационные технологии Оставьте, пожалуйста, свой комментарий к публикации |
© 2007-2018, Дмитрий Скоробогатов.
Разрешается воспроизводить, распространять и/или изменять материалы сайта
в соответствии с условиями GNU Free Documentation License,
версии 1.2 или любой более поздней версии, опубликованной FSF,
если только иное не указано в самих материалах.