Filesystems Node.JS:What's;fs.watchFile";工作
根据fs.watchFile(filename,[options],listener)函数启动一个例程,该例程将 注意Filesystems Node.JS:What's;fs.watchFile";工作,filesystems,node.js,filesystemwatcher,Filesystems,Node.js,Filesystemwatcher,根据fs.watchFile(filename,[options],listener)函数启动一个例程,该例程将 注意文件名的更改。每次访问文件时都会调用回调侦听器 它还说 选项如果提供,则应该是一个包含两个成员的对象,一个是布尔值,持久值,一个是以毫秒为单位的轮询值 这表示它将根据间隔中的内容每隔一段时间检查一次。但它也说 默认值为{persistent:true,interval:0} 那么这是否意味着它将每隔毫秒检查一次文件时间是否发生了变化?它是否侦听操作系统级事件?这是怎么回事?是的,
文件名的更改。每次访问文件时都会调用回调
侦听器
它还说
选项
如果提供,则应该是一个包含两个成员的对象,一个是布尔值,持久值
,一个是以毫秒为单位的轮询值
这表示它将根据间隔中的内容每隔一段时间检查一次。但它也说
默认值为{persistent:true,interval:0}
那么这是否意味着它将每隔毫秒检查一次文件时间是否发生了变化?它是否侦听操作系统级事件?这是怎么回事?是的,cpedros是正确的,这似乎是重复的。不过,我想我可以对这一点有更多的了解
每个操作系统都有自己的文件更改事件被触发。在Linux上,它是inotify(以前是dnotify),在Mac上是fsevents,在Windows上是FileSystemWatcher。我不确定底层代码是否能处理每种情况,但这是一般的想法
如果您只想在Linux上观看一个文件,我建议您。如果要查看目录,请将inotify plus与一起使用。我已经实现了这一点,它就像一个魅力
如果你感兴趣,我可以发布一些代码。node inotify plus的优点在于,它抽象了inotify的许多缺点,并提供了一个直观的API,用于侦听文件上的特定事件
编辑:这不应该用来观看大量的文件。在我的系统中,最大值是8192。可以使用以下命令找到您的最大值cat/proc/sys/fs/inotify/max\u user\u watches
。这可以用来监视目录中的更改,然后从中找出各个文件。如果直接位于该目录下的文件被修改,则会触发修改事件
编辑:感谢@guiomie指出Windows现在完全支持观看文件。我假设这是v0.6.x版本。为了扩展tjameson的奇妙答案,您可以使用规范化节点版本和操作系统版本之间的API。它还为取消链接
和新建
提供事件,而不仅仅是更改
,并增加了对目录树监视的支持。我认为这与See tjameson的答案是重复的:虽然它可能是重复的,但旧问题中提供的答案已经过时。我估计到2013年,还有更多的现代解决方案。值得注意的是,在NodeV6中,默认值是{persistent:true,interval:5007}
。0的间隔没有逻辑意义。问题提出时,情况似乎并非如此,但将0更改为1:ctx->interval=interval?间隔:1代码>。这是在Windows上的Cygwin(unix emulator)上测试的,最终将在Solaris中使用。我相信Node.js仅在Linux上受支持,所以它可能在不支持inotify的情况下进行某种轮询。@tjameson您提到过不要用它查看大量文件或文件夹。您是否想到了一种更适合于查看大量文件或文件夹的方法?@tjameson File Watch现在在Windows上受支持。@tjameson您是否介意发布一个小示例,说明如何将node inotify pluspls与node walk集成在一起(如果有的话,请:)