Issue
I am trying to find the oldest folder in a directory of my nodejs app.
Right now I get the folder names by fs.readdirSync
and the I try to run through the mtime
in a for-loop with the fs.stat
function. But it does not return any values.
cron.schedule('* * * * *', () => {
folders = fs.readdirSync(__dirname + '/uploads/');
var oldestTime;
var oldest;
for (var i = 0; i < folders.length; i++) {
let stats = fs.statSync(folders[i]);
if (oldestTime == undefined || stats.mtime < oldestTime) {
oldestTime = stats.mtime;
oldest = folders[i];
}
}
console.log("oldest folder name is:", oldest)
}
Is there a better way?
Thank you so much!
Solution
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)
or use sort to get the oldest one:
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();