如何找到节点目录中最旧的文件夹?
How can I find the oldest folder in a node directory?
我试图在我的 nodejs 应用程序的目录中找到最旧的文件夹。
现在我通过 fs.readdirSync
获取文件夹名称,并且我尝试 运行 通过 mtime
在带有 fs.stat
函数的 for 循环中。但它没有 return 任何值。
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)
}
有没有更好的方法?
非常感谢!
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)
或使用排序得到最旧的:
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();
您使用 fs.stat() 的异步版本。请尝试同步(无回调)fs.statSync()。
并且不要忘记 readdir returns 结果将当前目录命名为 .
,将父目录命名为 ..
。您可能希望将这些排除在您的实时搜索之外。
请花一些时间阅读 Javascript 异步编程模型。
我试图在我的 nodejs 应用程序的目录中找到最旧的文件夹。
现在我通过 fs.readdirSync
获取文件夹名称,并且我尝试 运行 通过 mtime
在带有 fs.stat
函数的 for 循环中。但它没有 return 任何值。
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)
}
有没有更好的方法? 非常感谢!
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)
或使用排序得到最旧的:
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();
您使用 fs.stat() 的异步版本。请尝试同步(无回调)fs.statSync()。
并且不要忘记 readdir returns 结果将当前目录命名为 .
,将父目录命名为 ..
。您可能希望将这些排除在您的实时搜索之外。
请花一些时间阅读 Javascript 异步编程模型。