使用Node.js的fs模块如何获取匹配随机编号的文件扩展名?
实现方案
你可以通过Node.js内置的path模块安全提取对应文件的扩展名,完整实现如下:
const fs = require('node:fs') const path = require('node:path') fs.readdir(dir, (err, files) => { // 先处理读取目录的错误 if (err) throw err const num = (Math.floor(Math.random() * files.length) + 1).toString() // 匹配编号对应的目标文件 const targetFile = files.find(file => file.startsWith(`${num}.`)) if (!targetFile) { console.log('未找到对应编号的文件') return } // 获取扩展名:extname返回带点的后缀,slice(1)可去掉点得到纯扩展名 const fileExt = path.extname(targetFile).slice(1) console.log(fileExt) // 输出对应文件的扩展名:jpg/png/gif }
替代方案(无需引入模块)
如果不想引入path模块,也可以用字符串切割的方式实现,仅适用于文件名仅含一个.的场景:
const fileExt = targetFile.split('.').pop()
注意事项
- 上述匹配逻辑依赖你的文件命名规则为
数字.扩展名格式,和你给出的['1.jpg', '2.png', '3.gif']示例一致 - 优先推荐使用
path.extname,该API可以兼容含多个.的复杂文件名(比如4.album.cover.webp),提取结果更准确
内容的提问来源于stack exchange,提问作者MegaMix_Craft
相关产品推荐
相关产品推荐

