我找到了很多关于C ++,C#等的答案,但还没有为Node.js找到一个。这是我的情况。
我创建了一个模块,用于监视FTP服务器中的文件/目录更改(新的或更新的,不关心已删除的文件)。一旦我注意到新文件,或者现有文件被更改,我会收到通知并通知我的模块B将此文件同步到Sourceforge.net。该模块工作正常,立即对变化作出反应。
但我还不满意的是,当添加新文件时,该文件会根据文件大小多次接收“已修改”事件:大小越大,它将收到的“修改”事件越多。这是因为在上传文件时,OS会定期将上传的缓冲区刷新到文件系统,从而导致多个“已修改”的fs.watch
事件。
问题
如何检查文件是否仍处于打开状态,以便我知道“已修改”事件实际上是因为剩余数据被刷新而不是因为文件已被多次更改,所以我可以忽略它? “
文件关闭或写入停止后,我可以通知我的模块B同步到SF.net。
我很感激任何想法。感谢。
答案 0 :(得分:3)
您可以考虑设置超时,然后重新检查文件以确保大小和修改时间没有改变,如果它们没有改变则假定上传已完成并将文件传输到SF.net。
另一种选择是根据您找到的c解决方案创建本机节点模块;
一些信息;
Getting Started with Node.js Native Modules
但是使用node-gyp而不是node-waf