Смотреть файлы и каталоги с помощью Electron Framework

File and Folder Watcher постоянно отслеживает наличие новых файлов в одной или нескольких папках. Когда поступают новые файлы, File and Folder Watcher запускает пользовательское действие.

Библиотека

Для решения этой задачи мы будем использовать node.js библиотека чокидара что намного лучше, чем функция fs.watchFile в node.js, но почему?

Node.js fs.watch:

  • Не сообщает имена файлов на OS X.
  • Не сообщает о событиях вообще при использовании редакторов, таких как Sublime на OS X.
  • Часто сообщает о событиях дважды.
  • Издает большинство изменений как rename,
  • имеет много других вопросов.
  • Не предоставляет простой способ рекурсивного просмотра файловых деревьев.

Node.js fs.watchFile:

  • Почти так же плохо при обработке событий.
  • Также не обеспечивает рекурсивного просмотра.
  • Результатом является высокая загрузка процессора.

Chokidar решает эти проблемы, поэтому мы собираемся использовать это в нашем проекте для поиска папок, файлов и т. Д. Чтобы включить его в ваш проект, выполните следующую команду в командной строке:

npm install chokidar --save

Тогда мы сможем использовать его из javascript в нашем электронном проекте, используя:

var fileWatcher = require("chokidar");

Просмотр папок и файлов

Чтобы создать наблюдателя, используйте метод chokidar.watch и добавьте правильных слушателей, чтобы узнать больше о слушателях и всех методах, прочтите документацию библиотеки здесь.

Следующая функция создаст наблюдатель событий для заданного пути к папке:

function StartWatcher(path){
var chokidar = require("chokidar");
var watcher = chokidar.watch(path, {
ignored: /[\/\\]\./,
persistent: true
});
function onWatcherReady(){
console.info('From here can you check for real changes, the initial scan has been completed.');
}
// Declare the listeners of the watcher
watcher
.on('add', function(path) {
console.log('File', path, 'has been added');
})
.on('addDir', function(path) {
console.log('Directory', path, 'has been added');
})
.on('change', function(path) {
console.log('File', path, 'has been changed');
})
.on('unlink', function(path) {
console.log('File', path, 'has been removed');
})
.on('unlinkDir', function(path) {
console.log('Directory', path, 'has been removed');
})
.on('error', function(error) {
console.log('Error happened', error);
})
.on('ready', onWatcherReady)
.on('raw', function(event, path, details) {
// This event should be triggered everytime something happens.
console.log('Raw event info:', event, path, details);
});
}

Теперь нам нужен путь, чтобы посмотреть. Создайте простую кнопку, которая запустит Обозреватель папок системы, чтобы выбрать путь, и запустите наблюдатель, используя следующий код:

var dialog = require('electron').remote;
dialog.showOpenDialog({
properties: ['openDirectory']
},function(path){
if(path){
// Start to watch the selected path
StartWatcher(path[0]);
}else {
console.log("No path selected");
}
});

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

Основные функции должны отображаться в консоли:

Наблюдатель за электронными файлами

Чтобы увидеть предыдущий проект, не стесняйтесь исследовать это в официальных электронных примерах нашего мира кода в github здесь. Повеселись

Ссылка на основную публикацию
Adblock
detector