5

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

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

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

问题

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

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

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

4

1 回答 1

4

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

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

一些信息;

Node.js 原生模块入门

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

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

于 2012-11-27T17:04:37.160 回答