gpt4 book ai didi

javascript - 如何从目录中读取文件列表,在 Node JS 中按修改日期排序

转载 作者:搜寻专家 更新时间:2023-10-31 22:21:51 30 4
gpt4 key购买 nike

需要在 Node js 中通过降序或升序从特定目录读取文件列表。

我试过下面的代码,但无法得到解决方案。

fs.readdir(path, function (err, files) {
if (err) throw err;
else {
var res = [];
files.forEach(function (file) {
if (file.split('.')[1] == "json") {
fs.stat(path, function (err, stats) {

});
res.push(file.substring(0, file.length - 5));
}
});
}

stats 参数将 mtime 作为修改时间?

有什么方法可以获取修改日期的文件。

最佳答案

mtime 给出 Unix 时间戳。您可以轻松地将日期转换为,
const date = new Date(mtime);

对于您的排序问题,您可以按照以下方式进行操作

var dir = 'mydir/';

fs.readdir(dir, function(err, files){
files = files.map(function (fileName) {
return {
name: fileName,
time: fs.statSync(dir + '/' + fileName).mtime.getTime()
};
})
.sort(function (a, b) {
return a.time - b.time; })
.map(function (v) {
return v.name; });
});

files 将是按升序排列的文件数组。
对于降序,只需将 a.time 替换为 b.time,例如 b.time - a.time

更新:ES6+ 版本

const myDir = 'mydir';

const getSortedFiles = async (dir) => {
const files = await fs.promises.readdir(dir);

return files
.map(fileName => ({
name: fileName,
time: fs.statSync(`${dir}/${fileName}`).mtime.getTime(),
}))
.sort((a, b) => a.time - b.time)
.map(file => file.name);
};

Promise.resolve()
.then(() => getSortedFiles(myDir))
.then(console.log)
.catch(console.error);

关于javascript - 如何从目录中读取文件列表,在 Node JS 中按修改日期排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30727864/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com