如何在节点目录中找到最旧的文件夹?

时间:2021-03-28 10:40:23

标签: node.js express timestamp fs

我试图在我的 nodejs 应用程序的目录中找到最旧的文件夹。 现在我通过 <button id="submitButton" type="submit" class="btn btn-secondary btn-sm">Save</button> 获取文件夹名称,然后我尝试使用 fs.readdirSync 函数在 for 循环中运行 mtime。但它不返回任何值。

fs.stat

有没有更好的办法? 非常感谢!

2 个答案:

答案 0 :(得分:0)

folders = fs.readdirSync(__dirname + "/uploads");
var oldestTime;
var oldest;

for (var i = 0; i < folders.length; i++) {
    let stats = fs.statSync(__dirname + "/uploads/" + folders[i]);
    if (oldestTime == undefined || stats.mtime < oldestTime) {
        oldestTime = stats.mtime;
        oldest = folders[i];
    }
}
console.log("oldest folder name is:", oldest)

或使用 sort 获取最旧的:

const fs = require('fs');
const cron = require("cron");
var job = new cron.CronJob('* * * * * *', function () {
    const folders = fs.readdirSync(__dirname + "/uploads");
    var oldest = folders.sort((a, b) => fs.statSync(__dirname + '/uploads/' + a).mtime - fs.statSync(__dirname + '/uploads/' + b).mtime)[0];
    console.log("oldest folder name is:", oldest)
});
job.start();

答案 1 :(得分:0)

您使用 fs.stat() 的异步版本。尝试使用同步(无回调)fs.statSync()。

并且不要忘记 readdir 为当前目录返回名为 . 的结果,为父目录返回名为 .. 的结果。您可能希望从您的 mtime 搜索中排除那些。

请花一些时间阅读 Javascript 异步编程模型。