2013-02-28 54 views
1

我想跟蹤目錄中的新文件。我使用的文檔中提供的腳本:http://nodejs.org/api/fs.html#fs_fs_watch_filename_options_listenerNode.js:跟蹤目錄中的新文件

var fs = require('fs'); 
fs.watch('mydir/', function (event, filename) { 
    console.log('event is: ' + event); 
    if (filename) { 
     console.log('filename provided: ' + filename); 
    } else { 
     console.log('filename not provided'); 
    } 
}); 

我使用touch hello.txt例如添加文件mydir/

運行腳本時,我沒有得到新的文件名,因爲發出的事件是rename !!這是控制檯輸出。

event is: rename 
filename not provided 

我怎樣才能得到文件的新名稱hello.txt

謝謝。

回答

3

在同一頁還介紹您的問題:

提供回調文件名參數不支持每個 平臺上(目前唯一支持Linux和Windows)。即使在 支持的平臺文件名並不總是保證提供。

我覺得你最好的選擇是切換到另一個模塊提供了類似的功能,如watch(我沒有任何經驗,我自己)。

+0

由於robertklep。我目前正在使用Mac,這就是爲什麼我有問題與FS。我會切換看。 – htaidirt 2013-02-28 12:02:09

+0

Mac也在這裏,同樣的問題,所以我希望'watch'能解決它:) – robertklep 2013-02-28 12:19:23

0

fs.watch('somedir', (event, filename) => { 
 
})

filename這裏工作,你需要的是跟蹤的第二個參數。

的Mac 10.11.3,節點V5.9

0

chokidarhttps://github.com/paulmillr/chokidar很容易設置。按照自述文件中的說明進行設置。下面是一個簡單的例子,我使用時,/視頻相對於我的Node.js應用程序的根目錄中的子文件夾中生成的視頻文件來檢測:

  • 安裝的Node.js(包括NPM)
  • 生成包。 JSON npm init
  • 安裝Chokidar庫入/ node_modules子文件夾,保存依賴性的package.json npm install chokidar --save
  • 中創建一個示例的程序文件(即觸摸video.js
  • 創建一個文件夾來觀看(即mkdir videos
  • 下面的代碼添加到的Video.js(如自述中描述,這將看在/視頻子文件夾的變化和忽略了句號前綴的文件名): var chokidar = require('chokidar'); chokidar.watch('./videos', {ignored: /[\/\\]\./}).on('all', function(event, path) { console.log(event, path); });

  • 啓動程序node video.js打印輸出,指示正在觀看/ videos子目錄及其內容,即 $ node video.js addDir ./videos

  • 複製/保存文件(即測試。MOV)到/視頻子目錄打印以下,以終端標準輸出: add videos/test.mov
  • 卸下文件打印以下到終端: unlink videos/test.mov
相關問題