![](/img/trans.png)
[英]Node.js - Append JSON file without using FS lib - require('fs)
[英]Get file type using fs/node.js
我有一个包含几个文件的文件夹,我需要获取与我在num
变量中生成的数字匹配的文件类型/扩展名,那么有什么办法可以做到吗?
我目前的代码是:
fs.readdir(dir, (err, files) => {
const num = (Math.floor(Math.random() * files.length) + 1).toString();
// here I need to get file type/extension
}
files
变量返回这个: ['1.jpg', '2.png', '3.gif']
要在文件列表中查找文件而不考虑扩展名,请在列表中的文件上使用path.basename
和path.extname
以path.extname
扩展名。 对于单个搜索,请使用files.find()
。
const filename = files.find(x => path.basename(x, path.extname(x)) === num.toString()))
但是,出于随机选择的目的,简单地从files
随机获取一个条目可能更好。 原因是,如果文件都按顺序编号,那是一样的,但如果它们不是按顺序编号,则上述内容可能会中断。
const filename = files[num] // and take away + 1 from num
您可以在 ArrayList 中生成一个随机数并获取该文件,而不是匹配整个文件名。
const fs = require("fs");
const path = require("path");
fs.readdir(__dirname, (err, files) => {
const randomNum = Math.floor(Math.random() * files.length);
// get the random file
let randomFileName = files[randomNum];
console.log(randomFileName);
/// Get unique exts
const exts = [...new Set(files.map((name) => path.extname(name)))];
console.log(exts);
const randomExt = Math.floor(Math.random() * exts.length);
// Get file with random ext
randomFileName = files.find((x) => path.extname(x) === exts[randomExt]);
console.log(randomFileName);
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.