使用Electron Framework监视文件和目录

本文概述

  • chokidar库
  • 监控文件夹和文件
File and Folder Watcher持续监视一个或多个文件夹中的新文件。当新文件到达时, 文件和文件夹监视程序将触发自定义操作。
chokidar库 为了处理此任务, 我们将使用node.js chokidar库, 该库比node.js的fs.watchFile函数要好得多, 但是为什么呢?
Node.js fs.watch:
  • 不报告OS X上的文件名。
  • 在OS X上使用Sublime之类的编辑器时, 根本不报告事件。
  • 经常两次报告事件。
  • 发出大多数更改作为重命名。
  • 还有很多其他问题。
  • 没有提供一种简便的方法来递归监视文件树。
Node.js fs.watchFile:
  • 事件处理几乎一样糟糕。
  • 也不提供任何递归监视。
  • 导致高CPU使用率。
Chokidar解决了这些问题, 因此我们将在项目中使用它来监视文件夹和文件等。要将其包含在项目中, 请在命令行中执行以下命令:
npm install chokidar --save

然后, 我们将能够在Electron项目中使用javascript使用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"); } });

系统文件夹浏览器应该出现, 并且如果选择了文件夹, 观察者将开始扫描给定路径内的文件夹和文件。然后它将开始监视所有给定的事件。
基本功能应显示在控制台中:
使用Electron Framework监视文件和目录

文章图片
【使用Electron Framework监视文件和目录】要查看previos项目, 请随时在github上的代码世界的官方Electron示例中对其进行探索。玩得开心

    推荐阅读