本文概述
- chokidar库
- 监控文件夹和文件
chokidar库 为了处理此任务, 我们将使用node.js chokidar库, 该库比node.js的fs.watchFile函数要好得多, 但是为什么呢?
Node.js fs.watch:
- 不报告OS X上的文件名。
- 在OS X上使用Sublime之类的编辑器时, 根本不报告事件。
- 经常两次报告事件。
- 发出大多数更改作为重命名。
- 还有很多其他问题。
- 没有提供一种简便的方法来递归监视文件树。
- 事件处理几乎一样糟糕。
- 也不提供任何递归监视。
- 导致高CPU使用率。
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监视文件和目录】要查看previos项目, 请随时在github上的代码世界的官方Electron示例中对其进行探索。玩得开心
推荐阅读
- 如何使用Electron Framework执行exe文件(系统应用程序)
- 如何使用CLI构建(发布)Electron应用程序的发行版(发布)
- 使用MediaSync的Android应用在播放视频时冻结
- Webview中的Android youtube网站正在干扰
- Android - 压缩位图,然后将其保存到SDCARD的活动结果中
- APP进入后台后才会释放内存
- 如何在chef recipe中包含application.properties文件中的属性
- 安卓材质按钮,文字上方有图标。
- 从MySql DB检索PDF到android(使用Volley)