如果打开/正在写入文件,如何检入Node.js?

时间:2012-11-27 11:05:38

标签: node.js filesystemwatcher fs

我找到了很多关于C ++,C#等的答案,但还没有为Node.js找到一个。这是我的情况。

我创建了一个模块,用于监视FTP服务器中的文件/目录更改(新的或更新的,不关心已删除的文件)。一旦我注意到新文件,或者现有文件被更改,我会收到通知并通知我的模块B将此文件同步到Sourceforge.net。该模块工作正常,立即对变化作出反应。

但我还不满意的是,当添加新文件时,该文件会根据文件大小多次接收“已修改”事件:大小越大,它将收到的“修改”事件越多。这是因为在上传文件时,OS会定期将上传的缓冲区刷新到文件系统,从而导致多个“已修改”的fs.watch事件。

问题

如何检查文件是否仍处于打开状态,以便我知道“已修改”事件实际上是因为剩余数据被刷新而不是因为文件已被多次更改,所以我可以忽略它? “

文件关闭或写入停止后,我可以通知我的模块B同步到SF.net。

我很感激任何想法。感谢。

1 个答案:

答案 0 :(得分:3)

您可以考虑设置超时,然后重新检查文件以确保大小和修改时间没有改变,如果它们没有改变则假定上传已完成并将文件传输到SF.net。

另一种选择是根据您找到的c解决方案创建本机节点模块;

一些信息;

Getting Started with Node.js Native Modules

但是使用node-gyp而不是node-waf

https://github.com/TooTallNate/node-gyp