簡體   English   中英

node.js監視何時創建文件

[英]node.js monitoring for when a file is created

我正在編寫一個node.js程序,該程序需要在特定目錄中創建具有特定名稱的文件后立即執行操作。 我可以通過重復調用fs.readdir來做到這一點,直到看到文件名為止,但是我寧願做些更有效的事情。 有人知道這樣做的方法嗎?

查看fs.watch (和fs.watchFile作為后備)實現,但是意識到它並不完美:

http://nodejs.org/api/fs.html#fs_fs_watch_filename_options_listener

注意事項#

fs.watch API在各個平台上並非100%一致,因此在某些情況下不可用。 可用性#

此功能取決於基礎操作系統,該操作系統提供了一種通知文件系統更改的方法。

 On Linux systems, this uses inotify. On BSD systems (including OS X), this uses kqueue. On SunOS systems (including Solaris and SmartOS), this uses event ports. On Windows systems, this feature depends on ReadDirectoryChangesW. 

如果由於某些原因基礎功能不可用,則fs.watch將無法運行。 例如,監視網絡文件系統(NFS,SMB等)上的文件或目錄通常無法可靠地工作或根本無法工作。

您仍然可以使用使用狀態輪詢的fs.watchFile,但速度較慢且可靠性較低。

基本上,您可以自己使用fs.watchFilefs.watchFile或使用節點模塊為您完成此操作,強烈建議您使用節點模塊。對於非越野車跨平台和快速解決方案,這可能很棘手。 我建議使用chokidar查看執行此操作的其他模塊

使用chokidar,您可以執行以下操作:

var chokidar = require('chokidar');
var watcher = chokidar.watch('YourDirecrtory');
watcher.on('add', function(path) {console.log('File', path, 'has been added');});

這樣,您就不必擔心邊緣情況或跨平台支持。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM