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文件
监视工作目录的下所有文件:创建watchFolder.js文件
参考:
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
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
相关文章推荐
- Node.js学习笔记(8、配置文件package.json)
- node.js认识学习二:__dirname获取当前模块文件所在目录的完整绝对路径
- Node.js学习笔记(5)--文件简单操作
- node.js学习笔记之使用文件流
- node.js在windows下的学习笔记(9)---文件I/O模块
- Node.js学习过程总结(三)之文件上传和下载
- node.js学习之读取文件初步
- 从零学习node.js之文件操作(三)
- 【node.js学习】--(3)--读写文件
- node.js学习笔记之写文件
- Node.js学习开始了——事件流的控制/文件读写事件的的方法
- node.js学习之写文件初步
- Node.js学习(10)----文件系统fs
- Node.js 学习笔记(1) 文件操作
- 开始学习node.js了,第一节,fs文件系统 【fs.rename】重命名文件/文件夹
- node.js学习笔记(8)--multer模块文件上传
- node.js学习笔记之文件读写操作
- node.js 学习第十三天 fs 文件模块
- Node.JS入门--通过构建一个上传文件的服务器来学习Node.JS
- Node.js学习笔记7-文件系统