我想跟踪目录中的新文件。我使用了文档中提供的脚本:http://nodejs.org/api/fs.html#fs_fs_watch_filename_options_listener
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');
}
});
我使用mydir/
将文件添加到touch hello.txt
,例如。
运行脚本时,我没有获得新文件名,因为发出的事件是rename
!!这是控制台输出。
event is: rename
filename not provided
如何获取文件新名称hello.txt
?
感谢。
答案 0 :(得分:4)
同一页面也描述了您的问题:
每个都不支持在回调中提供filename参数 平台(目前仅支持Linux和Windows)。即使在 支持的平台文件名并不总是保证提供。
我认为最好的选择是切换到另一个提供类似功能的模块,例如watch(我对自己没有任何经验)。
答案 1 :(得分:1)
fs.watch('somedir', (event, filename) => {
})

filename
此处有效,您只需跟踪第二个参数。
Mac 10.11.3,Node v5.9
答案 2 :(得分:1)
chokidar 很容易设置。按照自述文件中的说明进行设置。这是我用来检测视频文件在/ video子文件夹中相对于我的Node.js应用程序根目录生成的快速示例:
npm init
npm install chokidar --save
video.js
)mkdir videos
)将以下代码添加到video.js(如README中所述,它将监视/ videos子文件夹中的更改并忽略以句号为前缀的文件名):
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
add videos/test.mov
unlink videos/test.mov