node.js - 我有一个包含文件列表的目录。我必须列出文件并找到具有最大文件大小的文件并在 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");
});
解决方案
代码是异步的,即你的console.log 在fs.stat()
函数返回任何值之前被执行。
console.log(foundFile + "foundfile");
console.log(statssize + "stats of file");
这些应该只写在fs.stat()
ie 的回调函数中,就在这一行的正下方
fileSizeInMegabytes = statssize / 1000000.0;
(y)
推荐阅读
- mysql - 如何在 mysql 8 中设置默认的自动增量值
- c++ - 容器包含功能?
- macos - MacOs:避免访问文件夹的警告
- python - 从视频中保存图像帧而不会丢失分辨率和质量
- javascript - 在 Kubernetes 中使用 Node.js 进行高性能服务器端渲染
- windows - 如何在Windows命令行批处理命令中提取由空格分隔的字符串
- azure - 生命周期管理策略不适用于 Azure Data Lake Gen 2
- matplotlib - seaborn clustermap中的反向树状图和热图排序
- c# - ASP.NET Core 3.1 URL 链接到需要授权的页面,给出错误防伪令牌验证失败
- elasticsearch - ElasticSearch 正则表达式不返回任何结果