Полезная информация

Многие проблемы быстрее решаются поиском по форуму и чтением FAQ, чем созданием новой темы и томительным ожиданием ответа.

№104-04-2015 00:02:41

yinfo
Участник
 
Группа: Members
Зарегистрирован: 15-05-2014
Сообщений: 27
UA: Firefox 35.0

Мониторить каталог локальной файловой системы из JavaScript?

При запуске FireFox загружается JavaScript, который должен мониторить заданный каталог локальной файловой системы на предмет появления в нём новых файлов .TXT.
При обнаружении файла .TXT JavaScript обрабатывает файл и удаляет.

Я пока реализовал самый тупой вариант, что пришел в голову  - использовать setInterval :

Выделить код

Код:

const Cc = Components.classes;
const Ci = Components.interfaces;
var paramsFolder = "C:\\iMacros\\Macros\\params\\";
window.setInterval(function(){            
    var file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsILocalFile);
    file.initWithPath( paramsFolder );
    var entries = file.directoryEntries;
    var array = [];            
    while(entries.hasMoreElements()){
            
        var entry = entries.getNext();
        entry.QueryInterface(Ci.nsIFile);
        array.push(entry);
    }            
    if (array.length>0){            
        /* Тут что-то делаем с файлами... */
    }
}, 2000);

Так как я  изучаю только FireFox XUL и Javacript, то у меня возникли сомнения - разве можно так делать - в цикле долбиться к папке. Может быть какой-нибудь интерфейс FireFox предоставляет возможность подключиться к папке и слушать изменения? Или слушать изменения одного конкретного файла, если есть хотя бы такая возможность.
Заранее спасибо
PS дело происходит в js iMacros, если это имеет значение. Но, думаю, вопрос в целом о FireFox и Javacript.


пишу скрипты на iMacros, сопрягаю iMacros с 1С

Отсутствует

 

№204-04-2015 11:22:24

yinfo
Участник
 
Группа: Members
Зарегистрирован: 15-05-2014
Сообщений: 27
UA: Firefox 35.0

Re: Мониторить каталог локальной файловой системы из JavaScript?

okkamas_knife пишет

только постоянно опрашивать.  без вариантов.

А жаль.

okkamas_knife пишет

вместо интервала лучше используй таймаут, чтоб функция сама себя через него вызывала, тогда туда проще  надежней поставить остановку цикла, а интервал если не убить(что может по каким либо причинам не случиться) так и будет крутиться до перезапуска браузера и при перезапуске скрипта будет запущено уже два интервала итд

Спасибо за мысль про setTimeout, этот метод, ИМХО, действительно больше подходит для моей цели.

"до перезапуска браузера" - это было бы идеально, но у меня почему-то все не как у людей.. setTimeout в глобальном пространстве имен отсутствует, он в моем контексте исполнения (iMacros) существует только для двух объектов:
1.window.setTimeout()
и
2.WorkerGlobalScope.setTimeout()

С первым вариантом легкая трудность - window закрыли и setTimeout не работает (это и логично и проверил только что).
А что за зверь WorkerGlobalScope я пока так и не понял (источник - https://developer.mozilla.org/en-US/doc … ndowTimers).

Отредактировано yinfo (04-04-2015 11:23:40)


пишу скрипты на iMacros, сопрягаю iMacros с 1С

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]