【问题标题】:How to check in Node.js if a file is open/being written to?如果文件已打开/正在写入,如何检查 Node.js?
【发布时间】:2012-11-14 23:47:06
【问题描述】:

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

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

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

问题

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

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

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

【问题讨论】:

    标签: node.js filesystemwatcher fs


    【解决方案1】:

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

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

    一些信息;

    Getting Started with Node.js Native Modules

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

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

    【讨论】:

    • 感谢您的建议。也许我会使用超时来检查这一点。
    猜你喜欢
    • 1970-01-01
    • 2012-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-15
    • 2016-02-25
    相关资源
    最近更新 更多