本文共 2010 字,大约阅读时间需要 6 分钟。
三、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://fyogi.baihongyu.com/