javascript - 如何在nodejs中使用fs从多个目录获取文件名?

标签 javascript arrays node.js fs

一旦我有了进一步的代码实现,我想从所有目录中获取文件信息,但我被困在这里并收到粘贴有问题的错误知道下面的代码中实现了什么错误吗?

定时任务

var fs = require('fs');
var path = require('path');
var async = require('async');
var directories = ['./logs/dit', './logs/st','./logs/uat']
function cronJob() {
directories.forEach(function(dir){
    var files = fs.readdir(dir);
    async.eachSeries(files, function(file,callback) {
            var filePath = path.join(dirPath, file);
            var fileInfo = {};
            fs.stat(filePath, function(err, stats) {
               if (err) {
                 console.info("File doesn't");
                } else {
                 fileInfo.fileDate = stats.birthtime;
                 fileInfo.filename = file;
                 console.log(fileInfo);
//                 compareDates(fileInfo,filePath);
//                 callback();
               }
            });
        });
})

}

cronJob();

错误

s\Ulog-0\ulog\app\serverfiles\logs\dit'
  at Error (native)
  at Object.fs.readdirSync (fs.js:808:18)
  at C:\Users\WebstormProjects\Ulog-0\ulog\app\serverfiles\cronJob
20
  at Array.forEach (native)
  at cronJob (C:\Users\WebstormProjects\Ulog-0\ulog\app\serverfile
obs.js:7:13)
  at Object.<anonymous> (C:\Users\\WebstormProjects\Ulog-0\ulog\app

最佳答案

readdir是异步的,所以你需要等待它的回调来执行进一步的操作。

很难知道到底是什么问题,所以我包含了日志语句。

编辑

var fs = require('fs');
var path = require('path');
var async = require('async');
var directories = ['/../../logs/dit', '/../../logs/st', '/../../logs/uat'];

// loop through each directory
async.eachSeries(directories, function (dir, cb1) {
    var dir = __dirname + dir;
    console.log('reading', dir);
    // get files for the directory
    fs.readdir(dir, function (err, files) {
        if (err) return cb1(err);

        // loop through each file
        async.eachSeries(files, function (file, cb2) {
            var filePath = path.resolve(dir + '/' + file);
            // get info for the file
            fs.stat(filePath, function (err, stats) {
                if (err) return cb2(err);
                var fileInfo = { fileDate: stats.birthtime, filename: file };
                console.log('fileInfo', fileInfo);
                compareDates(fileInfo, filePath);
                cb2(null, fileInfo);
            });
        }, cb1);

    });
}, function (err, fileInfos) {
    if (err) {
        console.info('error', err);
        return;     
    }
    // when you're done reading all the files, do something...
});

关于javascript - 如何在nodejs中使用fs从多个目录获取文件名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42836793/

相关文章:

javascript - jQuery 获取元素的属性和值

JavaScript 获取点击行的数据

javascript - JSON-Object 作为字符串 : Use of concat(), eval() 和/或 JSON.parse()?

java - 迭代实现 Iterable<Item> 的类中数组的非空部分

node.js - Windows 10 中包的 NPM 全局安装导致 Windows 脚本宿主错误

node.js - 与解构一起使用的 Sinon stub 函数

javascript - 用于限制浏览器窗口大小的 css 或 javascript 选项

javascript - 从 URL 列表中随机打开 URL 的小 URL?

c++ - 二维数组 C++ 错误

javascript - 如何比较两个对象数组并获取共同对象