2015-04-09 4 views
1

Когда я console.log(stats) в fs.stats функции для файла, это дает мне что-то вроде этого:Node fs.stat имя дает неопределенными

{ 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), он говорит, что не определено. Кто-нибудь знает, что я делаю неправильно? Я каким-то образом использую неправильное свойство?

+0

Любой, как вы получаете результаты в виде строки, вы можете проверить это, просто конвертировать в формат JSON для и попробуйте еще раз – abdulbarik

+0

Есть ли у вас немного больше кода здесь? 'fs.Stats' не имеет свойства' name' – jdphenix

+0

@jdphenix Я добавил код. @aba 'typeof stats' возвращает 'object' – Bramt

ответ

2

Вы используете ходока на files не ходок на file. Таким образом, статистика может содержать массив файлов не только один. Попробуйте console.log(stats), чтобы просмотреть структуру аргументов статистики для files.

Или, может быть, попробовать walker.on('file', function(path, stats, next){});

+0

На самом деле это только один файл, который проходит через функцию. Если бы было больше одного, я бы не смог console.log (stat). – Bramt

+0

Извините, но ваш комментарий не имеет смысла :). Почему вы не можете console.log (статистика), если было больше файлов? – AndreiDMS

+0

Потому что у меня нет forEach для запуска массива файлов. «Файлы» означают просмотр файлов вместо каталогов. – Bramt

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); 
      } 
     }); 
    }) 
}); 
+0

@self достаточно справедливо, не меняет простой факт, что' fs.stat() 'не возвращает что-то с свойством' name'. :) – jdphenix

+0

Я добавил код. Однако есть объект stat. Я должен уметь получить это имя. 'typeof stats' возвращает 'объект'. – Bramt