Node.Js fs模块文件操作(三)

三、Node.Js 文件或目录监视

1.fs.watchFile(filename, [options], listener);

对文件进行监视,并且在监视到文件被修改时执行处理

/**
 * filename, 完整路径及文件名;
 * [options], persistent true表示持续监视,不退出程序;interval 单位毫秒,表示每隔多少毫秒监视一次文件
 * listener, 文件发生变化时回调,有两个参数:curr为一个fs.Stat对象,被修改后文件,prev,一个fs.Stat对象,表示修改前对象
 */

var fs = require('fs');
var path = require('path');
var file1 = path.resolve('/test1/one.txt');
//监视文件
//1.当第一次创建监视器的时候,如果文件不存在,监视器毁掉函数会触发一次
fs.watchFile(file1, {
    interval: 20
}, function(curr, prev) {
    if (Date.parse(prev.ctime) == 0) {
        console.log('文件被创建');
    } else if (Date.parse(curr.ctime) == 0) {
        console.log('文件被删除');
    } else if (Date.parse(curr.mtime) != Date.parse(prev.mtime)) {
        console.log('文件有修改');
    }
});
var file2 = path.resolve('/test1/two.txt');
fs.watchFile(file2,  function(curr, prev) {
    console.log('这是第二个watch,监视文件有修改');
});
2.fs.unwatchFile(filename, [listener]);

取消对文件进行监视

/**
 * filename, 完整路径及文件名;
 * [listener], 要取消的监听器事件,如果不指定,则取消所有监听处理事件
 */

var fs=require('fs');
var path=require('path');
var file1=path.resolve('/test1/one.txt');
//监视文件
//当前程序没有结束,一直在监视文件
var listener=function(curr,prev){
	console.log('监视文件发生修改');
};
fs.watchFile(file1,{interval:100},listener);
//取消监视文件
//当前程序程序结束退出
fs.unwatchFile(file1,listener);
3.fs.watch(filename, [options], [listener]);

监视文件或目录

//对文件或目录进行监视,并且在监视到修改时执行处理;
// fs.watch返回一个fs.FSWatcher对象,拥有一个close方法,用于停止watch操作;
// 当fs.watch有文件变化时,会触发fs.FSWatcher对象的change(err, filename)事件,err错误对象,filename发生变化的文件名
/**
 * filename, 完整路径及文件名或目录名;
 * [listener(event, filename], 监听器事件,有两个参数:event 为rename表示指定的文件或目录中有重命名、删除或移动操作或change表示有修改,filename表示发生变化的文件路径
 */

var fs=require('fs');
var path=require('path');
var file1=path.resolve('/test1');
//监视文件
var fsWatcher=fs.watch(file1,function(err,filename){
	//console.log('创建监视器成功,filename:'+filename);
});
//chang 事件会触发多次
fsWatcher.on('change',function(err,filename){
	console.log(filename+'-发生变化');
});
//50秒后 关闭监视
setTimeout(function(){
	fsWatcher.close(function(err){
		if(err)
			console.error(err);
		console.log('关闭成功watch');
	});
},50000);
更多参考: http://www.cnblogs.com/gaojun/p/4159488.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值