您的位置:首页 > Web前端 > Node.js

Node.js学习之文件监控

2017-06-21 11:15 459 查看
Node允许监视文件或目录是否发生变化。监视意味着当文件系统里面的文件被创建、修改、删除,都会触发指定的回调函数。

Node提供的File System(文件系统)模块中提供了两个关于文件监控的函数:

fs.watchFile() - 实时监控文件变化

fs.watch() - 实时监控文件夹变化

Node API中明确提出:fs.watch() 比 fs.watchFile 和 fs.unwatchFile 更高效。 可能的话,应该使用 fs.watch 而不是 fs.watchFile 和 fs.unwatchFile。

首先以监控特定文件为例,监视工作目录下的.CSS文件:

创建watchFile.js文件

// 加载File System(文件系统)模块
var fs = require('fs');
// 获取工作目录下所有文件
var files = fs.readdirSync(process.cwd());
files.forEach(function(file) {
// 监听“.css”后缀的文件
if (/\.css/.test(file)) {
console.log('正在监控:' + process.cwd() + '/' + file);
fs.watchFile(process.cwd() + '/' + file, function(curr, prev) {
console.log('-' + file + ' changed !');
// 注意是"`"(笔记本键盘上数字1前面那个按钮),不是单引号
console.log(`the current mtime is: ${curr.mtime}`);
console.log(`the previous mtime was: ${prev.mtime}`);
// 监测具体操作
if(Date.parse(prev.ctime) == Date.parse(curr.mtime)){
console.log('-' + file + ' 文件被创建');
}else if(Date.parse(curr.mtime) == 0){
console.log('-' + file + ' 文件被删除');
}else if(Date.parse(curr.mtime) != Date.parse(prev.mtime)){
console.log('-' + file + ' 文件被修改');
}
});
}
});


监视工作目录的下所有文件:创建watchFolder.js文件

// 加载File System(文件系统)模块
var fs = require('fs');

// 获取工作目录下所有文件
var files = fs.readdirSync(process.cwd());
var count = 0;
// 列出所有监控的文件
console.log('正在监控:' + process.cwd());
files.forEach(function(file) {
console.log((++count) + ' ' + file);
});

// 监听器回调有两个参数 (eventType, filename)。 eventType 可以是 'rename' 或 'change',filename 是触发事件的文件的名称。
// 注意,在大多数平台,当一个文件出现或消失在一个目录里时,'rename' 会被触发。
fs.watch(process.cwd(), function(eventType, filename) {
console.log(`事件类型是: ${eventType}`);
if (eventType == 'change') {
console.log('文件:' + filename + ' 被修改!');
}
if (eventType == 'rename') {
console.log('文件:' + filename + ' 被新建/删除!');
}

});


参考:

Node API:

http://nodejs.cn/api/fs.html#fs_fs_read_fd_buffer_offset_length_position_callback

Node.js 中File System模块详细介绍:

http://www.tuicool.com/articles/equ22ev

http://javascript.ruanyifeng.com/nodejs/fs.html#toc7

http://www.jianshu.com/p/5683c8a93511

Node.js中其他文件监控模块:

http://www.cnblogs.com/cool-fire/p/6565242.html

http://tech.it168.com/a2015/0228/1707/000001707605.shtml
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: