node学习笔记文件监听的实现

博读代码 博读代码     2022-11-29     748

关键词:

前言

开发云盘的时候,使用到了依赖于 node.js 的 chokidar 做本地文件监听,获取文件修改的触发事件。下面来给大家介绍一下涉及的知识点以及实现过程。


知识点

chokidar.watch(paths, [options]) 返回一个chokidar构造监听实例
参数:paths
一个字符串或者是一个数组,描述监听的文件或者文件夹的路径。


事件响应

.add 新增文件时触发

.addDir 新增文件夹的时候触发

.unlink 对应的文件的删除

.unlinkDir 对应的文件夹的删除

.change 文件内容改变时触发

.all(除了ready, raw, and error之外所有的事件类型)包含:add、addDir、unlink、unlinkDir、change

.ready 初始化完成

.raw 原始事件

.error 捕获error

.unwatch(path / paths) 停止监听传入文件/文件夹

.close() 从监视文件中移除/关闭所有侦听器

.getWatched() 返回此FSWatcher实例正在监视的文件系统上所有路径的对象


监听文件样例代码

import chokidar from "chokidar";
import ipcRenderer from "electron";
import fs from "fs";
let watcher: any = null;
export const addFileToWatcher = (localPath: string) =>
if (watcher)
watcher.add(localPath);
else
watcher = chokidar.watch(localPath);
watcher.on("all", (event: any, path: string) =>
//监听除了ready, raw, and error之外所有的事件类型
console.log(event, path);
);
watcher.on("ready", (path: string) =>
console.log("ready", path);
);
watcher.on("add", (path: string) =>
console.log("增加监听", path);
console.log(watcher.getWatched());
);
watcher.on("change", (path: string) =>
const token = localStorage.getItem("token");
console.log("监听+文件更新:" + path);
ipcRenderer.send("fileChange", path.replaceAll("\\\\", "/"), token);
);
watcher.on("unlink", (path: string) =>
watcher.unwatch(path);
if (fs.existsSync(path))
watcher.add(path);
const token = localStorage.getItem("token");
console.log("文件保存:" + path);
ipcRenderer.send("fileChange", path.replaceAll("\\\\", "/"), token);

);

;

export const removeFileWathcer = (localPath: string) =>
console.log(watcher,watcher)
if (watcher)
console.log("移除监听-", localPath);
watcher.unwatch(localPath);

;

注意事项

实现文件监听时,出现了系统兼容性的问题,有的电脑会出现文件修改不触发change,而是触发了 unlink 事件的情况。因此,在 unlink 事件里做了补充,当文件存在时触发更新。


以上就是本期关于  chokidar 模块实现本地文件监听的分享,希望能给大家带来帮助。


下期给大家分享更多实战中的点滴,如果大家对此感兴趣,欢迎各位关注、留言,大家的支持就是我的动力!

ros学习笔记(18)tf坐标系广播与监听的编程实现

系统Ubuntu18.04ROS版本:Melodic1创建功能包cd~/catkin_ws/srccatkin_create_pkglearning_tfroscpprospytfturtlesim2创建Python文件1创建scripts文件夹和.py文件touchturtle_tf_broadcaster.pytouchturtle_tf_listener.py修改.py文件属性(允许作为执行文件)2实... 查看详情

ros2学习笔记22--使用launch启动/监听多个node节点(代码片段)

概要:这篇内容主要介绍如何使用launch启动/监听多个node节点环境:ubuntu20.04,ros2-foxy,vscode最后如果没有陈述实操过程中碰到问题的话,则表示该章节都可被本人正常复现3.4使用launch启动/监听多个node节点ÿ... 查看详情

node.js学习笔记——回调函数

  Node.js异步编程的直接体现就是回调。  那什么是回调呢?回调指的是将一个函数作为参数传递给另一个函数,并且通常在第一个函数完成后被调用。需要指明的是,回调函数不是由该函数的实现方直接调用,而是在特定... 查看详情

node视频学习笔记入门笔记

node笔记新建文件夹打开之后运行终端npminit;npmiexpressnpmiejs模板引擎npmimysql配置自定义启动命令node.js创建views和static目录router路由目录middleware中间目录存放于路由配套的一些操作方法在路由加载页面之前获取所需要的数据model数据... 查看详情

java学习笔记:gui的实现

实现界面的三步:组件布局(Layout)事件(Event)布局:常用的三种:FlowLayoutBorderlayoutGridLayout都可以把组件add进去事件:事件:用户对组件的一个操作事件源:能产生事件的一个GUI组件对象,如按钮,文本框等事件处理方法:... 查看详情

node.js学习笔记-模块化开发(代码片段)

JavaScript开发过程中存在文件依赖和命名冲突问题,因此要采用模块化开发的方式。软件当中的模块化开发每个JavaScript文件就是一个模块,模块内部的变量无法在外部进行访问。有两种方式可以实现访问。文件b中访问a中... 查看详情

arcgisapiforjavascript4.2学习笔记[7]鹰眼(缩略图的实现及异步处理promise回调函数监听的笔记)

文前说明:关于style就是页面的css暂时不做评论,因为官方给的例子的样式实在太简单了,照抄阅读即可。这篇文章有着大量AJS4.x版本添加的内容,如监听watch、Promise对象、回调函数、异步处理等内容,原理性的东西我会在文末... 查看详情

「node学习笔记」浅谈node.js读写xlsx文件

前言先给大家简单介绍一下,这是一个读写xlsx文件的功能,主要帮助我们打印或是读写一些数据。应用场景:以消费订单为例,当客户需要导出网站的累计消费金额时,我们需要查看流水账,作为开发人员可以将数据在node的服... 查看详情

node学习笔记http

nodeurlquerystring第二个参数指定分隔符也可以指定三个参数,效果和两个参数类似不同于querystring,下面是querystringfy的用法 queryescape与encodeURIComponent方法类似,能解析中文  HTTP爬虫node创建一个Server 测试能不能从豆... 查看详情

nodejs学习笔记---定时任务(node-schedule)

目录写在之前Cron风格定时器通配符解释范围触发递归规则定时器对象文本语法定时器取消定时器写在之后写在之前  在实际开发项目中,会遇到很多定时任务的工作。比如:定时导出某些数据、定时发送消息或邮件给用户、... 查看详情

nodejs入门学习笔记二——解决阻塞问题

  在最开始,我们要弄清楚node会什么会存在阻塞?  node是这么标榜自己的:“在node中除了代码,所有一切都是并行执行的!”  意思是,Node.js可以在不新增额外线程的情况下,依然可以对任务进行并行处理——Node.js是... 查看详情

gulp学习笔记

gulp 是基于 Nodejs 的自动任务运行器,能自动化地完成javascript/coffee/sass/less/html/image/css等文件的的测试、检查、合并、压缩、格式化、浏览器自动刷新、部署文件生成,并监听文件在改动后重复指定的这些步骤。在实... 查看详情

node学习笔记_04express相册

学习node用express框架做了一个相册展示及上传功能:1.没有连接服务器,这里全部是操作文件夹2.安装上传文件的依赖formidable,npminstall--saveformidablegithub地址:https://github.com/zuomm/photo下面整理下项目创建过程:一.npminit生成packege.js... 查看详情

文件系统(node.js学习笔记)

根据nodejs菜鸟教程整理。官方API文档:nodeJS文件系统API其他整理:nodejsFileSystem文件系统操作函数分类1、引用:导入文件系统模块(fs)语句:varfs=require("fs")2、异步与同步:异步:fs.readFile();  第一个参数为回调error信息。同... 查看详情

node.js学习笔记之写文件

node.js之写文件//---------------optfile.js------------------var fs= require(‘fs‘);module.exports={  writefile:function(path,data){  //异步方式    fs.writeFile 查看详情

node学习笔记

1、Node,可以让javascript运行在服务器端的平台。  是一个为实时Web(Real-timeWeb)应用开发而诞生的平台。充分考虑了实时响应,超大规模数据要求下架构。2、摒弃了传统平台依靠多线程来实现高并发的设计思路,而采用了单... 查看详情

适配器--学习笔记(代码片段)

1事件三要素a)事件源:操作事件的对象,例如:窗体Frameb)事件监听器:事件监听器监听事件源,例如WindowListner,它是一个接口c)事件,例如:单击事件,通过事件,可以取得事件源监听器就是一个实现特定接口的普通java程序,... 查看详情

nodejs学习笔记之node的模块

一、全局模块定义:何时何地都能访问,不需要引用。process.env返回项目运行所在的环境变量信息。process.argv参数数组(能接收通过命令执行node程序时所传入的参数),参数1:返回当前node所在路径,参数2:返回当前文件路径例子... 查看详情