我找到了很多关于C++、C#等的答案,但还没有找到Node.js的答案。这是我的情况。
我创建了一个模块,用于监视FTP服务器中文件/目录的更改(新建或更新,不关心已删除的文件)。一旦我注意到有新文件或现有文件被更改,我会收到通知并通知我的B模块将此文件同步到Sourceforge.net。该模块运行良好,对更改作出及时反应。
但我仍不满意的是,在添加新文件时,该文件会接收到“已修改”事件多次,具体取决于文件大小:文件越大,它将接收到越多的“已修改”fs.watch
事件。这是因为在文件正在上传时,操作系统定期将已上传的缓冲区刷新到文件系统中,从而导致多个“已修改”事件。
问题
如何检查文件是否仍处于打开状态,以便我知道“已修改”事件实际上是因为剩余数据被刷新而发生的,而不是因为文件已多次更改,这样我就可以忽略它?"
一旦文件关闭或写入停止,我就可以通知我的B模块同步到SF.net。
任何想法都将不胜感激。谢谢。