Tre*_*ham 9 filesystemwatcher node.js
fs.watch只提供两种可能的事件类型:'rename'和'change'.重命名文件(例如使用mv)和删除文件(例如使用rm)都会导致fs.watch报告'rename'事件.
移动文件后,fs.watch将继续报告文件(除非您明确关闭FSWatcher).当发生这种情况时,我想知道文件的移动位置.
有没有办法做到这一点,没有依次触摸系统上的每个文件来查看'change'事件何时被触发?
这看起来是不可能的,直到节点实现一个接口来从文件描述符获取文件名(这样你就可以只保留一个 fd 并从那里获取名称rename),或者沿着 FSWatcher 事件可靠地返回路径/文件名。
解决此问题的方法是通过 创建指向目标文件的临时硬链接fs.link,然后即使在更改后您也可以获取该文件,但您将无法检索它的新名称。
有趣的是,EventMachine 也有同样的问题:http://eventmachine.rubyforge.org/EventMachine/FileWatch.html#M000291