Node.js监控文件何时创建

node.js monitoring for when a file is created

本文关键字:何时 创建 文件 监控 js Node      更新时间:2023-09-26

我正在编写一个node.js程序,需要在特定目录中创建具有特定名称的文件时立即执行某些操作。我可以通过重复调用fs来实现。readdir,直到我看到文件名,但我宁愿做一些更有效的事情。有人知道怎么做吗?

查看fs.watch(和fs)。watchFile作为后备)实现,但意识到它并不完美:

http://nodejs.org/api/fs.html fs_fs_watch_filename_options_listener

#

警告

fs。watch API在不同平台上并不是100%一致的在某些情况下不可用。可用性#

此功能依赖于底层操作系统提供的文件系统更改通知的方法。

On Linux systems, this uses inotify.
On BSD systems (including OS X), this uses kqueue.
On SunOS systems (including Solaris and SmartOS), this uses event ports.
On Windows systems, this feature depends on ReadDirectoryChangesW.

如果底层功能由于某种原因不可用,则fs。手表将无法工作。例如,查看文件或网络文件系统(NFS、SMB等)上的目录通常不会

您仍然可以使用fs。watchFile,它使用统计轮询,但它是

您基本上可以自己使用fs.watchFilefs.watch,或者使用节点模块来为您完成,我强烈建议使用节点模块。对于无bug的跨平台快速解决方案,这可能有点棘手。我建议使用chokidar或查看其他模块。

使用chokidar你可以这样做:

var chokidar = require('chokidar');
var watcher = chokidar.watch('YourDirecrtory');
watcher.on('add', function(path) {console.log('File', path, 'has been added');});