Node.JS:“ fs.watchFile”如何工作?

根据Node0.4.3的API文档,该fs.watchFile(filename,[options], listener)函数启动一个例程,该例程将

注意上的更改filenamecallback每次访问文件时都会调用该侦听器。

它还说

options提供的if应该是包含两个成员的对象,boolean persistentinterval,以毫秒为单位的轮询值

这表明它将每隔一段时间检查一次。但这也说

默认值为{ persistent: true, interval: 0 }

那么这是否意味着它将每毫秒检查一次文件时间是否更改?它是否监听操作系统级别的事件?这是如何运作的?

回答:

是的,cpedros是正确的,这似乎是重复的。我想我可以对此进一步阐明。

每个操作系统都有其自己的文件更改事件,该事件会被触发。在Linux上,它是inotify(以前是用于通知),在Mac上是fsevents,在Windows上是FileSystemWatcher。我不确定底层代码是否可以处理每种情况,但这是一般的想法。

如果您只想在Linux上观看文件,建议使用node-inotify-plus-

plus。如果要观看目录,请在节点移动中使用inotify-plus-plus 。我已经实现了它,并且它就像一个魅力。

如果您有兴趣,我可以发布一些代码。node-inotify-plus-

plus背后的优点在于,它抽象了inotify的大部分功能,并提供了直观的API,用于侦听文件中的特定事件。

编辑:这不应该用来观看大量文件。在我的系统上,最大值为8192。可以使用此命令找到最大值cat

/proc/sys/fs/inotify/max_user_watches。这可以用来仅监视目录中的更改,然后从那里找出单个文件。如果直接修改该目录下的文件,则将触发修改事件。

编辑:感谢@guiomie指出,Windows现已完全支持观看文件。我认为这是与v0.6.x版本一起发布的。

以上是 Node.JS:“ fs.watchFile”如何工作? 的全部内容, 来源链接: utcz.com/qa/409503.html

回到顶部