gpt4 book ai didi

filesystems - Node.JS: "fs.watchFile"是如何工作的?

转载 作者:IT老高 更新时间:2023-10-28 22:12:11 25 4
gpt4 key购买 nike

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

Watch for changes on filename. The callback listener will be called each time the file is accessed.

它也说

The options if provided should be an object containing two members a boolean, persistent, and interval, a polling value in milliseconds

这表明它将根据间隔中的内容每隔一段时间检查一次。但它也说

The default is { persistent: true, interval: 0 }.

这是否意味着它会每毫秒检查文件时间是否更改?它是否监听操作系统级别的事件?它是如何工作的?

最佳答案

是的,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 找到。这可用于仅监视目录的更改,然后从那里找出各个文件。如果直接在该目录下的文件被修改,将触发修改事件。

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

关于filesystems - Node.JS: "fs.watchFile"是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5394620/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com