firefox - 如何在 Firefox 中异步监控文件?

标签 firefox firefox-addon xpcom

我想监视 Windows 计算机上的纯文本文件以了解其更改。每当外部应用程序更新文件时,我的附加组件都应该读取它并采取相应的行动。

浏览了大量文档后,我找不到在 Firefox 中执行此操作的直接工具。所以我想出了以下方法。

请提出建议。

方法 1 - 在 while 循环中{
a) 列出被监控目录中的所有文件/使用 nsIFile.exists()
b) 如果文件确实存在,则进入下一步,否则进入休眠
c) 使用“nsIFile”接口(interface)并获取文件的属性“lastModifiedTime”并将其与最初存储的值进行比较
d) sleep 1 秒。
}
我打算使用 NetUtil.asyncFetch() 来读取此文件。 障碍是 a) 绕过安全性 b) 在主线程中调用时性能受到影响。
虽然这实际上不是异步的..我可以在“ChromeWorker”线程中将其称为 .js

尝试了上述方法..
但我无法休眠..似乎无法休眠..setTimeOut() 没有帮助我

方法 2 -
有点牵强,不确定这是否有效:)
如果文件存在,则将“nsIFile”打开为“nsIInputStreamPump”

最佳答案

没有内置 API 可以获取有关文件更改的通知。但是,您可以使用 js-ctypes直接调用操作系统函数。因此,在 Windows 上,您将创建一个 ChromeWorker 并调用 FindFirstChangeNotification function那里。然后,您可以使用包含以下调用的循环:

您应该调用FindCloseChangeNotification一旦你看完了。

关于firefox - 如何在 Firefox 中异步监控文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11495227/

相关文章:

html - 为什么我的联系表单在 Windows 浏览器中显示不正确?

firefox - 如何查看和编辑基于 WebExtensions 的 Firefox 插件使用的本地存储?

firefox - 对抗 Fuckip IP 匿名 FireFox 插件

Firefox 扩展/插件 - 检测工作区已锁定

javascript - XUL:滚动到顶部并重新加载页面

firefox - 在 Firefox 扩展中捕获关闭选项卡事件

css - 灰度到颜色的过渡在 Firefox 中不起作用

javascript - 从 Javascript/XPCOM 调用的批处理文件不显示命令提示符窗口

javascript - XPCOM 中的依赖注入(inject)

firefox-addon - 拦截/处理 mime 类型/文件