繁体   English   中英

node.js监视何时创建文件

[英]node.js monitoring for when a file is created

我正在编写一个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.watch将无法运行。 例如,监视网络文件系统(NFS,SMB等)上的文件或目录通常无法可靠地工作或根本无法工作。

您仍然可以使用使用状态轮询的fs.watchFile,但速度较慢且可靠性较低。

基本上,您可以自己使用fs.watchFilefs.watchFile或使用节点模块为您完成此操作,强烈建议您使用节点模块。对于非越野车跨平台和快速解决方案,这可能很棘手。 我建议使用chokidar查看执行此操作的其他模块

使用chokidar,您可以执行以下操作:

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

这样,您就不必担心边缘情况或跨平台支持。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM