Node.js学习之文件监控

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值