Node.Js fs模块文件操作(三)_fs.watch 和 fs.watchfile-程序员宅基地

技术标签: 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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u011127019/article/details/52346510

智能推荐

嵌入式linux系统移植-U-Boot 移植_桃子移植第五驱动-程序员宅基地

文章浏览阅读970次。ubootNXP 官方开发板 uboot 编译测试查找 NXP 官方的开发板默认配置文件编译 NXP 官方开发板对应的 uboot烧写验证与驱动测试正点原子开发手册学习笔记我们就来学习如何将 NXP 官方的 uboot 移植到正点原子的 I.MX6ULL 开发板上,学习如何在 uboot 中添加我们自己的板子。小白自述:本章学习笔记虽然是一步步移植uboot,实际是为了学习在移植过程中能够对uboot源码各个功能有更深入地了解。NXP 官方开发板 uboot 编译测试查找 NXP 官方的开发板默认_桃子移植第五驱动

python 调用钉钉机器人接口案例一则 —— 筑梦之路_钉钉机器人 api-程序员宅基地

文章浏览阅读737次。智能回复:钉钉机器人 API 提供了智能回复功能,可以实现根据用户发送的消息自动回复。开发者可以根据消息内容进行语义分析,并返回合适的回复。钉钉机器人 API 是阿里巴巴旗下钉钉平台提供的一种基于 HTTP 协议的 API 服务,它可以帮助开发者快速构建智能机器人,实现与用户的实时互动和自动回复。消息处理:钉钉机器人 API 提供了消息处理功能,可以实现对用户发送的消息进行接收、解析和回复。钉钉机器人 API 提供了丰富的功能,可以帮助开发者快速构建智能机器人,实现与用户的实时互动和自动回复。_钉钉机器人 api

【PyQt】PyQt学习(一)框架介绍+环境搭建_peaklin脚本pyqt-程序员宅基地

文章浏览阅读1.7k次,点赞4次,收藏22次。本文首先对比了Python的各个GUI库并给出了首推PyQt的原因,其次本文详细介绍了Pycharm的环境搭建,最后本文写了一个简单的PyQt示例,用于入门展示。_peaklin脚本pyqt

高中程序员怼本科程序员:编程不用深奥知识,高中不比你们差_高中编程-程序员宅基地

文章浏览阅读920次。在如今竞争激烈的职场,人才的竞争十分激烈,对于程序员这个岗位来说也是如此。很多的企业把学历当做一个硬性要求,虽说一些大企业看重能力,对学历没什么要求,那是因为一个好的学历更具有培养价值,所以经验丰富的HR都是根据学历来筛选人才,而985.211的更是行业中的火热的争取对象。但是最近就有网友发帖说道,编程用不到太多知识,培训下就会了,写的代码也不会差。对此,有一些网友顿时不乐意了:..._高中编程

unity代码生成圆柱网格并使用曲面细分顶点_unity编写曲面mesh-程序员宅基地

文章浏览阅读442次,点赞9次,收藏11次。unity代码生成圆柱网格_unity编写曲面mesh

Vue2使用video标签 + hls.js实现播放m3u8视频流_vue2中 播放.m3u8-程序员宅基地

文章浏览阅读573次,点赞6次,收藏3次。使用element的el-dialog对话框组件+video标签 + hls.js_vue2中 播放.m3u8

随便推点

Python全栈(五)Web安全攻防之7.MySQL注入读写文件和HTTP头中的SQL注入_all tested parameters-程序员宅基地

文章浏览阅读4.4k次,点赞6次,收藏16次。pikachu是一个比较详细的漏洞平台;MySQL读取文件用load_file()函数;写入文件用into outfile。UPDATEXML()函数用于捕捉错误;在user-agent后加入payload进行user-agent注入;通过修改请求头中的referer进行SQL注入测试,可以通过3种方式进行安全测试;在请求头的cookie参数中加入payload‘进行cookie测试;使用Base64加密的注入语句,插入到Cookie对应的位置完成SQL注入漏洞的探测。_all tested parameters

Freertos创建(动态和静态)任务与删除任务,延时函数_freertos中可以既创建动态任务又创建静态任务吗-程序员宅基地

文章浏览阅读360次。FreeRTOS 中,任务的创建有两种方法,一种是使用动态创建,一种是使用静态创建。动态创建时,任务控制块和栈的内存是创建任务时动态分配的,任务删除时,内存可以释放。静态创建时,任务控制块和栈的内存需要事先定义好,是静态的内 存 ,任务删除时 ,内存不能释放。更具需求使用这两种创建方法。_freertos中可以既创建动态任务又创建静态任务吗

量化投资学习-26:最贵的免费与时间的价值_量化投资免费课程-程序员宅基地

文章浏览阅读2.4k次。最近有一个深刻的体会:如果算上时间的成本和回报率,免费的往往是最贵的的我们总喜欢到网站搜各种免费的视频讲课,然后,然后殊不知,很多的免费课程知识普及性的,我们花去了时间,却没有学到精髓。我们总期望买入低成本的股票,美其名曰,价值投资,与主力一起建仓,殊不知,主力的建仓时间很长,主力通过后期拉升的空间换取前期漫长的时间长度。然而对于散户而言,很难坚持坚持下去,即使坚持下去了,我们也无法知道单只股票的底部和顶部到底在哪里,大多数时候,我们在底部上升不久,还没有进入快速拉升阶段,就已经止盈出局,我们漫长的_量化投资免费课程

ECG ×AI: 机器/深度学习的ECG应用入门(5)_深度学习处理ecg是处理图像还是处理数据点-程序员宅基地

文章浏览阅读2w次,点赞23次,收藏77次。深度学习:卷积神经网络(CNN)1.引言上一部分简单介绍了传统机器学习框架在ECG分类领域的基本应用。传统机器学习框架对于人工特征非常依赖,如果算法设计者没有足够经验,很难提取出高质量的特征,这也是传统机器学习框架的局限性。近几年来以卷积神经网络(Convolutional Neural Network,CNN)为代表的深度学习技术蓬勃兴起,其优势在于可以从大数据中自动习得特征而无需人工设计特征,..._深度学习处理ecg是处理图像还是处理数据点

【Python】np.save()和np.load()函数详解和示例-程序员宅基地

文章浏览阅读1.8k次,点赞16次,收藏17次。本文通过函数原理和运行示例,对np.save()和np.load()函数进行详解,以帮助大家理解和使用。更多Numpy函数详解和示例,可参考.........。_np.load

BLE学习(1) - 蓝牙协议架构简介_5.x版本还增加了mesh的功能-程序员宅基地

文章浏览阅读548次。BLE协议分了很多个版本,目前用的比较多的是4.2和5.X。4.2版本传输速率只有1Mbps,5.X版本传输速率增加到了2Mbps;4.2版本广播最大长度为31byte, 5.X版本广播最大长度增加到了254byte;5.X版本增加了Mesh组网功能,且通讯距离增加到了300米以上;每个厂商提供的SDK包中的协议栈都会有些区别,下面我们主要以Nordic厂商的协议栈进行分析。_5.x版本还增加了mesh的功能

推荐文章

热门文章

相关标签