在Mac OSX上通过节点0.5.9的fs.watch
我在Node v0.5.9上运行以下内容:
var fs = require("fs"); fs.watch("/Users/username/testingFsWatcher/",function(event,file) { console.dir(arguments); });
然后我做:
-
cd /Users/username/testingFsWatcher/
-
>file1
– >{ '0': 'rename', '1': null }
-
mkdir new_folder
– >{ '0': 'rename', '1': null }
-
>new_folder/file2
– >没有事件触发/输出 -
touch file1
– >没有事件触发/输出 -
rm file1
– >{ '0': 'rename', '1': null }
我注意到两件事情看起来不正确:不监视子目录( new_folder
),更新/修改观看的文件不会触发change
事件。 看看节点代码,并testing它应该是可能的。
那么,是否有可能让fs.watch
观看一个目录及其所有的子目录? 是否至less有可能从文件修改中获得一个事件? 另外,据我所知, fs.watch
是由绑定到eventid
(在OSX中)的kqueue
支持的,是否有可能获得这个eventid
?
注意:我特别使用fs.watch
而不是fs.watchFile
因为我需要观察整个目录(最好是所有的子目录:)。
谢谢您的帮助!
此问题不再出现在最新的Node版本中。 但是,在fs.watch
中还有其他一些bug,所以你可能想暂时使用它,直到解决这些bug为止: https : //github.com/joyent/node/issues/search? fs.watch