nodejs 监听目录下所有的文件

有一个项目,想用nodejs 做一下文件夹目录下所有文件的 监听,

当文件夹目录下 增加了 文件的时候,就执行某个脚本

如何监听 是否有新的文件生成呢,不是文件修改 ,是有新的文件添加了

阅读 8.2k
5 个回答

我忍不住了啊

年轻人,你需要

npm install chokidar --save

为什么呢?

Node.js fs.watch:

  • 不会再OSX上显示文件名

  • 当你在OSX用编辑器编辑文件的时候不会触发事件

  • 经常会连续触发两次事件

  • 没有提供一个好的接口去递归文件

  • 等等

Node.js fs.watchFile:

  • 经常在处理事件的时候会挂掉

  • 没法递归文件

  • 过高的CPU占用率

让我们再看看数据
clipboard.png

所以用Chokidar是个好主意

使用fs.watch函数,这个函数是专门用来对文件(或目录)进行监控的。

1. 函数原型

fs.watch(filename[, options][, listener])

2. 举例

(1) 使用的代码如下:

var fs = require('fs');

fs.watch('/home/su/node/tmp', {
    persistent: true, // 设为false时,不会阻塞进程。
    recursive: false
}, function(event, filename) {
    if (event === 'change') {
        console.log('检测到新增文件。');
        if (filename) {
            console.log('文件名:', filename);
        }
    }
});

(2) 在目录下增加一个文件:

touch a.txt

(3) 结果在控制台打印:

检测到新增文件。
文件名: a.txt

更详细的说明,参考API文档。

这东西 为啥不用 Gulp呢~

chokidar吧,这个模块比较成熟。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题