使用 fs/node.js 获取文件类型
Get file type using fs/node.js
我有一个包含少量文件的文件夹,我需要获取与我在 num
变量中生成的编号相匹配的文件的 type/extension,那么我有什么办法可以做到吗?
我当前的代码是:
fs.readdir(dir, (err, files) => {
const num = (Math.floor(Math.random() * files.length) + 1).toString();
// here I need to get file type/extension
}
files
变量return这个:['1.jpg', '2.png', '3.gif']
要在文件列表中查找文件而不考虑扩展名,请对列表中的文件使用 path.basename
和 path.extname
以删除扩展名。对于单个搜索,使用 files.find()
.
const filename = files.find(x => path.basename(x, path.extname(x)) === num.toString())
但是,出于随机选择的目的,最好从 files
中随机抽取一个条目。原因是,如果文件都是按顺序编号的(从 1 开始),那是一回事,但如果它们不是全部按顺序编号(从 1 开始),则上述内容可能会中断。
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);
});
我有一个包含少量文件的文件夹,我需要获取与我在 num
变量中生成的编号相匹配的文件的 type/extension,那么我有什么办法可以做到吗?
我当前的代码是:
fs.readdir(dir, (err, files) => {
const num = (Math.floor(Math.random() * files.length) + 1).toString();
// here I need to get file type/extension
}
files
变量return这个:['1.jpg', '2.png', '3.gif']
要在文件列表中查找文件而不考虑扩展名,请对列表中的文件使用 path.basename
和 path.extname
以删除扩展名。对于单个搜索,使用 files.find()
.
const filename = files.find(x => path.basename(x, path.extname(x)) === num.toString())
但是,出于随机选择的目的,最好从 files
中随机抽取一个条目。原因是,如果文件都是按顺序编号的(从 1 开始),那是一回事,但如果它们不是全部按顺序编号(从 1 开始),则上述内容可能会中断。
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);
});