获取目录 node-fs 中所有带有信息(名称、类型、大小)的文件

Get all files with infos(name, type, size) within directory node-fs

我有一个路由到我想读取的位置

var route = ('F:\uploads\ponys');

var rez = fs.readdirSync(route, 'utf8'); 它 return 路由内所有文件(和文件夹)的数组。

console.log(rez);
[ 'file.rtf',
  'Course.rtf',
  'extra.png',
  'ar102.rar',
  'New folder']

我想要 return 一个包含名称、类型和大小的 JSON 对象。我怎样才能继续获得这个:

{
  "files":[
    {"name": "file", "type": "rtf", "size": 3445},  [or with "."(.rtf)]
    {"name": "Course", "type": "rtf", "size": 900},
    {"name": "extra", "type": "png", "size": 2424},
    {"name": "ar102", "type": "rar", "size": 340432},
    {"name": "New folder", "type": "", "size": 123456789} 
  ]
}

对于目录中的每个文件,您尝试获取 3 个值:

  1. 文件名: 已经用readdirSync)
  2. 得到
  3. 文件扩展名: 使用path.extname(filename)
  4. 文件大小: 使用fs.statSync(filename).size

1。获取文件扩展名示例

const path = require('path');
const extension = path.extname('index.html');
// 'html'

2。获取文件大小示例

const fs = require('fs');
const fileSizeInBytes = fs.statSync('file.html').size;

3。完整方法

const path = require('path');
const fs = require('fs');

const getFileInfoFromFolder = (route) => {
  const files = fs.readdirSync(route, 'utf8');
  const response = [];
  for (let file of files) {
    const extension = path.extname(file);
    const fileSizeInBytes = fs.statSync(file).size;
    response.push({ name: file, extension, fileSizeInBytes });
  }
  return response;
}

const { name, extenstion, fileSizeInBytes } = getFileInfoFromFolder("...")