节点fs.stat名称给出undefined

时间:2015-04-09 05:25:45

标签: javascript node.js stat fs

当我在文件的console.log(stats)函数中fs.stats时,它会给我这样的内容:

{ dev: 16777223, mode: 33188, nlink: 1, uid: 501, gid: 20, rdev: 0, blksize: 4096, ino: 49868100, size: 5617, blocks: 16, atime: Mon Jan 05 2015 18:18:10 GMT-0700 (MST), mtime: Thu Sep 25 2014 21:21:28 GMT-0600 (MDT), ctime: Thu Sep 25 2014 21:21:28 GMT-0600 (MDT), birthtime: Thu Sep 25 2014 21:21:28 GMT-0600 (MDT), name: 'README.md', type: 'file' }

这是代码,我正在使用walk node plugin。该函数每次找到文件时都会运行。

walker.on('files', function(path, stats, next){
    console.log(stats.name);
    next();
});

但是当我做console.log(stats.name)时,它表示未定义。有谁知道我做错了什么?我是否以某种方式使用了错误的属性?

2 个答案:

答案 0 :(得分:2)

您在files上使用助行器而不是file上的助行器。因此统计信息可能包含一个文件数组,而不仅仅是一个。请尝试console.log(stats)查看files的统计信息参数结构。

或者尝试walker.on('file', function(path, stats, next){});

答案 1 :(得分:1)

查看fs.Stats的文档,没有这样的name属性。 fs.stat类似于stat(),它在返回的结构中也没有名称。

如果您想要文件名,则甚至不需要致电stat()。考虑一下:

var fs = require('fs');

fs.readdir('.', function(err, entries) {
    // filenames available here in the array `entries`
    entries.forEach(function(filename) {
        fs.stat('./' + filename, function(err, stats) {
            if (!err) {
                console.log(stats);
            }
        });
    })
});