2013-02-28 98 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
相关问题