关闭

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

标签: node.jsfs模块文件系统
1285人阅读 评论(0) 收藏 举报

三、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
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1057182次
    • 积分:12847
    • 等级:
    • 排名:第1195名
    • 原创:424篇
    • 转载:148篇
    • 译文:1篇
    • 评论:125条
    最新评论