繁体   English   中英

使用 fs/node.js 获取文件类型

[英]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.basenamepath.extnamepath.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM