根据Node0.4.3的API文档,该fs.watchFile(filename,[options], listener)函数启动一个例程,该例程将
fs.watchFile(filename,[options], listener)
注意上的更改filename。callback每次访问文件时都会调用该侦听器。
filename
callback
它还说
options提供的if应该是包含两个成员的对象,boolean persistent和interval,以毫秒为单位的轮询值
options
persistent
interval
这表明它将每隔一段时间检查一次。但这也说
默认值为{ persistent: true, interval: 0 }。
{ 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。这可以用来仅监视目录中的更改,然后从那里找出单个文件。如果直接修改该目录下的文件,则将触发修改事件。
cat /proc/sys/fs/inotify/max_user_watches
编辑:感谢@guiomie指出,Windows现已完全支持观看文件。我认为这是与v0.6.x版本一起发布的。