如何在Node.js的检查,如果一个文件被打开/被写入?(How to check in Node.

2019-08-03 06:02发布

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

我创建了(新的或更新的,不关心已删除的文件),在我的FTP服务器,手表的文件/目录更改的模块。 有一次,我看到一个新的文件,或现有一个改变,我得到的通知,并通知我的模块B同步此文件Sourceforge.net。 该模块工作正常,反应迅速的变化。

但我不太满意但是,当添加一个新文件,该文件接收“修改”事件多次取决于文件大小:大小越大,越“修改”的事件就会收到。 这是因为在该文件被上传OS定期刷新上传缓冲器到文件系统,因此导致多个“修饰的” fs.watch事件。

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

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

我将不胜感激任何想法。 谢谢。

Answer 1:

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

另一种选择是创建一个基于你发现你的C解决方案的本地节点模块;

一些信息;

入门Node.js的本机模块

但是使用节点GYP代替节点的WAF

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



文章来源: How to check in Node.js if a file is open/being written to?