首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Node.JS:"fs.watchFile“是如何工作的?

Node.JS:"fs.watchFile“是如何工作的?
EN

Stack Overflow用户
提问于 2011-03-23 00:33:28
回答 2查看 18.5K关注 0票数 18

根据API docs for Node 0.4.3fs.watchFile(filename, [options], listener)函数启动一个例程,该例程将

查看filename上的

更改。每次访问文件时都会调用callback侦听器。

它还说

options (如果提供)应该是包含两个成员的对象:布尔值persistent和轮询值interval (以毫秒为单位

这表明它将根据间隔中的内容频繁地进行检查。但它也说

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

那么这是否意味着它将每毫秒检查一次,看看文件时间是否发生了变化?它是否监听操作系统级别的事件?这是如何工作的呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-03 13:15:43

是的,cpedros是正确的,这看起来确实是重复的。不过,我想我可以对此有更多的了解。

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

如果你只是想在Linux上看一个文件,我推荐node-inotify-plus-plus。如果你想查看一个目录,在node-walk中使用inotify-plus-plus。我已经实现了这一点,它就像一个护身符。

如果你感兴趣,我可以发布一些代码。node- inotify -plus-plus背后的美妙之处在于,它抽象了inotify的大部分糟糕之处,并提供了一个直观的API来监听文件上的特定事件。

编辑:这不应该用来查看大量的文件。在我的系统上,最大值是8192。您可以使用此命令cat /proc/sys/fs/inotify/max_user_watches找到您的最大值。这可以用来观察目录的变化,然后找出其中的单个文件。如果直接位于该目录下的文件被修改,则会触发modified事件。

编辑:感谢@guiomie指出,Windows现在完全支持观看文件。我假设这是在v0.6.x版本中。

票数 12
EN

Stack Overflow用户

发布于 2012-04-19 11:44:39

要扩展tjameson的精彩答案,您可以使用watchr来标准化节点版本和操作系统监视差异之间的应用编程接口。它还为unlinknew提供事件,而不仅仅是change,还添加了对目录树监视的支持。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5394620

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档