同事,我有这样的功能,
const getFiles = (dir, files_) => {
files_ = files_ || [];
let files = fs.readdirSync(dir);
for (var i in files) {
var name = dir + '/' + files[i];
if (fs.statSync(name).isDirectory()) {
getFiles(name, files_);
} else {
files_.push(name);
}
}
return files_;
};
console.log(getFiles('./frontend/multimedia/image'));
这很好用,但是我如何告诉这个函数来观察文件夹内容的变化(删除或添加文件)?
唯一想到的就是跑getFiles('./frontend/multimedia/image')
进去setInterval()
。
我知道这不是最好的方法...
那么如何不重启这个功能,而是在里面实现文件夹跟踪呢?
Nodejs具有跟踪文件或目录更改的标准工具。
控制台输出:
它们可以使用,但回调只接收两种类型的事件
eventType
——“重命名”或“更改”。并非所有类型的操作系统都会收到修改后文件的名称。一般来说,要解决“监视删除或添加文件”的问题,该工具的选择性较低,您将不得不手动添加检查。
我推荐使用chokidar包。有了它,任务就轻松解决了:
控制台输出: