Node.js学习之文件监控

来源:互联网 发布:php获取访问者mac地址 编辑:程序博客网 时间:2024/06/05 06:31

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

原创粉丝点击