首页 > 解决方案 > 我有一个包含文件列表的目录。我必须列出文件并找到具有最大文件大小的文件并在 mongodb 中插入最大的文件

问题描述

我有一个包含文件列表的目录。我必须列出文件并找到最大文件大小的文件,然后在 mongodb 中插入最大的文件。我找到了最大大小的文件,但无法在控制台中打印。它显示未定义。

const path = require('path');
const fs = require('fs');
var sleep = require('system-sleep');
var fsCompare = require('fs-compare');
var statssize = 0;
var foundFile;
var directorypath = path.join(__dirname, 'directory');
var fsfiles = fs.readdir(directorypath, function(err, data) {
    var temp = [];
    if (err) {
        return console.error(err);
    }
    data.forEach(function(file) {
        var fileSizeInMegabytes;
        var pathtofiles = 'directory' + '\\' + file;
        fs.stat(pathtofiles, function(err, stats) {
            // sleep(5000);
            if (err) {
                return console.error(err);
            }
            if (statssize < stats.size) {
                statssize = stats.size;
                foundFile = pathtofiles;
            }
            fileSizeInMegabytes = statssize / 1000000.0;
        });
    });
    console.log(foundFile + "foundfile");
    console.log(statssize + "stats of file");
});

标签: node.js

解决方案


代码是异步的,即你的console.log 在fs.stat()函数返回任何值之前被执行。

console.log(foundFile + "foundfile");
console.log(statssize + "stats of file");

这些应该只写在fs.stat()ie 的回调函数中,就在这一行的正下方

fileSizeInMegabytes = statssize / 1000000.0;

(y)


推荐阅读