2016-05-11 4 views
2

Это only SO question about listing drives ??Список всех дисков Addon SDK (Nodejs/jpm) без необходимости использования Chrome

Я на Windows, я Newbee в аддон в разработке, с I (в настоящее время) использовать Firefox Addon SDK с Node.js/jpm, но не Web Extensions (пока), ни XPCOM/XUL вещь. Кажется, что некоторые смешивает все это ..

Поправьте меня, если я ошибаюсь, но в мае 2016 года, Web Extensionsне может разобрать файловую систему (в противном случае я был бы очень рад, чтобы иметь доступ к документации что тоже ^^.) И кажется, что Require chrome теперь устарел вместе с XUL/XPCOM вещами. Как я полагаю, все продвигаются вперед (выглядит так), чтобы перейти на веб-расширения (, что выходит за рамки темы), я бы не пошел Require chrome, так как мне пришлось бы его отбросить в любом случае в следующем году ...

Итак, как нам записывать диски в Firefox Addon SDK без импорта устаревших библиотек?

Мой ответ ниже, но хотел бы иметь лучший вариант, если таковой имеется. MDN страница о том:

ответ

0

Вот что я мог бы сделать с Addon SDK (или первоначально jetpack, если я не ошибаюсь), и да, это своего рода хак, потому что я не знаю, как сделать это в очистителя путь, и я не хочу использовать Require Chrome.

минимальная версия:

// index.js or main.js 
// declare the io/file API : 
var ioFile = require('sdk/io/file'); 

// array to make attempts : 
let drivesIds = ["c", "d", "e", "f", "g", .... "z" ]; // hack isn't it ? :/ 
for (let i = 0; i < drivesIds.length; i++) { 
    let driveName = drivesIds[i] + ":\\"; 
    if (ioFile.exists(driveName)) { 
     console.log(driveName + " is a drive and is ready !"); 
    } 
} 

А ты молодец! Хорошо, что это было довольно очевидно, но я не смог найти этот код в любом месте я искал, или код, который делает это лучше (опять же, без require('chrome'))

Расширенные версии могут:

  • положить все это в функция getDrives(), которая возвращает массив объектов накопителей, таких как { path: "c:\\", hasChildren: true, etc: "etc" }. (Проверка дочерних каталогов путем объединения ioFile.isFile() с ioFile.list() в for цикле, который расщепляет момент подкаталог сталкиваются.
  • порт, код в другой модуль аддон, с реализациями экспорта
  • даже инкапсулирует Io функции и свойства в качестве членов глобальный объект в модуле (вы можете отслеживать изменения файловой системы, как отключенные директории, магазин дерево файловой системы в памяти и т.д.)

Все, что делает ваш файл index.js легче. может ли это быть адаптировано к другой ОС? Я не знать.Заголовок вводит в заблуждение, в то время как это единственный вопрос о размещении дисков Addon SDK с тегами.

Никогда не пытайтесь построить целую дерево дисков, что остановит компьютер и потерпит неудачу в той или иной точке, потому что io/файл ограничен 250-260 символами длины пути в Windows.

Вопросы безопасности! Вероятно, поэтому это недокументировано, почему WebExtensions запрещает операции io? Но, я использую это, чтобы вставить хороший проводник Windows (выберите каталог, чтобы сохранить все, что вы хотите там, сокращая или сохраните как или диалоговые окна загрузки). Это единственная причина, по которой я использую Firefox. Я вернусь к dotNet и снова изобретаю колесо с большим количеством дыр в безопасности, если io недостаточно гибко (или отсутствует) в WE, или попробуйте Chrome вместо этого (если не устаревать API в ближайшие 10 лет). Факт в том, что в момент, когда вы можете автоматизировать синтаксический анализ, будут проблемы с безопасностью, но в тот момент, когда вы запретите это, расширения Addon - это не путь к файловой системе.