我有一個包含幾個檔案的檔案夾,我需要獲取與我在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']
uj5u.com熱心網友回復:
要在檔案串列中查找檔案而不考慮擴展名,請在串列中的檔案上使用path.basename和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
uj5u.com熱心網友回復:
您可以在 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);
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/351787.html
標籤:javascript 节点.js FS
