Javascript 如何使用Node JS获取已排序的文件路径列表
主要目标:转换图像,然后按照特定顺序制作转换图像的视频(使用videoshow) 问题:图像无序 预期:有一个文件路径列表,就像我在finder中看到的那样,按文件名排序 现实:我得到了一个未排序的文件路径列表。由于我正在使用Javascript 如何使用Node JS获取已排序的文件路径列表,javascript,node.js,asynchronous,fs,Javascript,Node.js,Asynchronous,Fs,主要目标:转换图像,然后按照特定顺序制作转换图像的视频(使用videoshow) 问题:图像无序 预期:有一个文件路径列表,就像我在finder中看到的那样,按文件名排序 现实:我得到了一个未排序的文件路径列表。由于我正在使用videoshow生成视频,这对我来说是一个严重的问题,因为图像被无序添加 尝试: 我使用的是异步代码,我认为这可能是问题所在,尽管我目前使用的是fs.readdirSync() 我尝试过使用glob模块,但也没有成功。 我试着在与文件名读取相关的所有内容之前加上一个wai
videoshow
生成视频,这对我来说是一个严重的问题,因为图像被无序添加
尝试:
我使用的是异步代码,我认为这可能是问题所在,尽管我目前使用的是fs.readdirSync()
我尝试过使用glob
模块,但也没有成功。
我试着在与文件名读取相关的所有内容之前加上一个wait
关键字,但也没用
代码
预期输出: 就像按顺序一样。 电流输出:
您需要对
fs.readdirSync
返回的数组进行排序。
普通排序无法解决此问题,您需要一种形式的自然排序
,以获得所需的排序
如果您有一个支持的节点构建,您可以使用如下内容:
let arr=[“10_123.5-126.6(2)(转换).png”,“11_123.5-126.6(3)(转换).png”,“12_139.6-139.8(1)(转换).png”,“13_139.6-139.8(2)(转换).png”,“14_139.6-139.8(3)(转换).png”,“15_166.1-170.6(1)(转换).png”,“16_166.1-170.6(2)(转换).png”,“17_166.1-170.6(3)(转换).png”,“18_.189.8)(转换).1882)(转换)(转换).png”,“1_113.3-113.7(1)(转换).png”,“20_188.8-189.4(3)(转换).png”,“21_6.6-7(1)(转换).png”,“22_6.6-7(2)(转换).png”,“23_6.6-7(3)(转换).png”,“24_68.5-68.6(1)(转换).png”,“25_68.5-68.6(2)(转换).png”,“26_68.5-68.6(3)(转换).png”,“27_77.4(转换),“29_77.1-77.4(3)(转换).png”,“2_113.3-113.7(3)(转换).png”,“30_81.7-81.9(1)(转换).png”,“31_81.7-81.9(2)(转换).png”,“32_81.7-81.9(3)(转换).png”,“33_87.3-87.4(1)(转换).png”,“34_87.3-87.4(2)(转换).png”,“35_87.3-87.4(3)(转换).png”,“36_81.3-96.9(1)”,“36_87.9(转换)(转换).png”,“39_未定义-未定义(1)(转换).png”,“3_116.7-118.6(1)(转换).png”,“40_未定义-未定义(2)(转换).png”,“41_未定义-未定义(3)(转换).png”,“4_116.7-118.6(3)(转换).png”,“6_121.6-122.3(转换).png”,“7_121.6-122.3(转换).png”,“8_121.6-122.3(转换).png“,“9_123.5-126.6(1)(已转换).png”];
让collator=新的Intl.collator(未定义{
数字:对,
敏感度:“基本”
});
arr.sort(collator.compare);
console.log(arr);
工作起来很有魅力。非常感谢。@VictorMaricato np,很高兴我能帮忙:)
const state = require("./state.js");
const fs = require("fs");
const originalDir = "./content/images/";
const resizedDir = "./content/images/resized/";
async function robot() {
const content = state.load();
await acquireImages();
console.log(content.images)
async function acquireImages() {
originalFiles = fs.readdirSync(originalDir);
imagesList = [];
resizedImagesList = [];
originalFiles.forEach(file => {
if (file.slice(-3) == "png") {
imagesList.push({
filePath: originalDir + file,
fileName: file.slice(0, -8)
});
}
});
await imagesList.forEach(image => convertImage(image));
await populateImageList();
}
async function populateImageList() {
resizedFilenames = await fs.readdirSync(resizedDir);
resizedImagesList = [];
for (const file of resizedFilenames) {
if (file.slice(-3) == "png") {
resizedImagesList.push(resizedDir + file);
}
}
content.images = resizedImagesList;
}
}
module.exports = robot;
[ '10_123.5-126.6(2)(converted).png',
'11_123.5-126.6(3)(converted).png',
'12_139.6-139.8(1)(converted).png',
'13_139.6-139.8(2)(converted).png',
'14_139.6-139.8(3)(converted).png',
'15_166.1-170.6(1)(converted).png',
'16_166.1-170.6(2)(converted).png',
'17_166.1-170.6(3)(converted).png',
'18_188.8-189.4(1)(converted).png',
'19_188.8-189.4(2)(converted).png',
'1_113.3-113.7(1)(converted).png',
'20_188.8-189.4(3)(converted).png',
'21_6.6-7(1)(converted).png',
'22_6.6-7(2)(converted).png',
'23_6.6-7(3)(converted).png',
'24_68.5-68.6(1)(converted).png',
'25_68.5-68.6(2)(converted).png',
'26_68.5-68.6(3)(converted).png',
'27_77.1-77.4(1)(converted).png',
'28_77.1-77.4(2)(converted).png',
'29_77.1-77.4(3)(converted).png',
'2_113.3-113.7(3)(converted).png',
'30_81.7-81.9(1)(converted).png',
'31_81.7-81.9(2)(converted).png',
'32_81.7-81.9(3)(converted).png',
'33_87.3-87.4(1)(converted).png',
'34_87.3-87.4(2)(converted).png',
'35_87.3-87.4(3)(converted).png',
'36_96.3-96.9(1)(converted).png',
'37_96.3-96.9(2)(converted).png',
'38_96.3-96.9(3)(converted).png',
'39_undefined-undefined(1)(converted).png',
'3_116.7-118.6(1)(converted).png',
'40_undefined-undefined(2)(converted).png',
'41_undefined-undefined(3)(converted).png',
'4_116.7-118.6(2)(converted).png',
'5_116.7-118.6(3)(converted).png',
'6_121.6-122.3(1)(converted).png',
'7_121.6-122.3(2)(converted).png',
'8_121.6-122.3(3)(converted).png',
'9_123.5-126.6(1)(converted).png' ]