首页 > 编程语言 >How to use Node.js to get all files full paths that nested in folders All In One

How to use Node.js to get all files full paths that nested in folders All In One

时间:2024-09-05 13:24:43浏览次数:9  
标签:Node files use fs stores name json file

How to use Node.js to get all files full paths that nested in folders All In One

如何使用 Node.js 获取文件夹中嵌套的所有文件的完整路径

demos

ESM

// ❌
// import fs from 'node:fs/promises';
// ✅
import * as fs from 'node:fs/promises';
// import * as fs from 'node:fs';
import  * as path from  'node:path';

async function main() {
  async function findFiles(folderName, arr = []) {
    let result = arr || [];
    const items = await fs.readdir(folderName, { withFileTypes: true });
    // ✅ fix
    for (const item of items) {
      const name = path.join(folderName, item.name);
      if (path.extname(item.name) === ".json") {
        // file
        console.log(`Found file: ${item.name} in folder: ${folderName}`);
        result.push(name);
      } else {
        // folder
        await findFiles(name, result);
      }
    }
    return result;
  }
  const files = await findFiles("stores");
  console.log(`❓files =`, files);
}

main();

/*

$ node ./bug-fix.esm

Found file: sales.json in folder: stores/201
Found file: sales.json in folder: stores/202
Found file: data.json in folder: stores/2022/11/11
❓files = [
  'stores/201/sales.json',
  'stores/202/sales.json',
  'stores/2022/11/11/data.json',
]

*/

CJS

const fs = require("fs").promises;
const path = require("path");

async function main() {
  async function findFiles(folderName, arr = []) {
    let result = arr || [];
    const items = await fs.readdir(folderName, { withFileTypes: true });
    // ✅ fix
    for (const item of items) {
      const name = path.join(folderName, item.name);
      if (path.extname(item.name) === ".json") {
        // file
        console.log(`Found file: ${item.name} in folder: ${folderName}`);
        result.push(name);
      } else {
        // folder
        await findFiles(name, result);
      }
    }
    return result;
  }
  const files = await findFiles("stores");
  console.log(`❓files =`, files);
}

main();

/*

$ node ./bug-fix.cjs

Found file: sales.json in folder: stores/201
Found file: sales.json in folder: stores/202
Found file: data.json in folder: stores/2022/11/11
❓files = [
  'stores/201/sales.json',
  'stores/202/sales.json',
  'stores/2022/11/11/data.json',
]

*/

https://gitlab.com/webgeeker/node.js-file-system/-/blob/main/bug-fix.js?ref_type=heads

https://gitlab.com/webgeeker/node.js-file-system/-/tree/main?ref_type=heads

(

标签:Node,files,use,fs,stores,name,json,file
From: https://www.cnblogs.com/xgqfrms/p/18398228

相关文章

  • 基于nodejs+vue大学生社团活动平台[程序+论文+开题]-计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景随着高等教育的普及和大学生课余生活的日益丰富,社团活动已成为培养学生综合素质、促进人际交往、提升团队协作能力的重要载体。然而,传统的社团管理方式往往......
  • 基于nodejs+vue大学生食堂饭菜价格信息管理系统[程序+论文+开题]-计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景随着高校规模的不断扩大与学生群体的日益多元化,大学生食堂作为校园生活的重要组成部分,其饭菜价格管理成为了一个备受关注的议题。传统的手工记录与核算方式......
  • 基于nodejs+vue大学生数码租赁网站[程序+论文+开题]-计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景随着科技的飞速发展,数码产品已成为大学生学习、生活及娱乐不可或缺的一部分。然而,高昂的购置成本往往让经济尚未独立的学生群体望而却步。同时,数码产品的更......
  • 基于nodejs+vue大学生体育运动会服务系统[程序+论文+开题]-计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景随着高等教育的普及与校园文化的日益丰富,大学生体育运动会作为展现青春活力、促进身心健康的重要平台,其规模与影响力逐年扩大。然而,传统的手工管理方式已难......
  • Prometheus通过node_exporter监控Node节点,Node节点的详细指标解读
    ✨✨欢迎大家来到景天科技苑✨✨......
  • 网站提示“Connection refused:数据库连接被拒绝”错误如何解决
    当您遇到“Connectionrefused:数据库连接被拒绝”的错误时,这意味着您的应用程序尝试连接数据库时未能成功建立连接。这种错误通常由以下几种原因造成:数据库服务未启动:确认数据库服务(如MySQL、PostgreSQL等)正在运行。您可以在服务器上使用命令行工具检查服务的状态,例如对于MyS......
  • Transfusion: Predict the Next Token and Diffuse Images with One Multi-Modal Mode
    Transfusion:PredicttheNextTokenandDiffuseImageswithOneMulti-ModalModel(2024,8)PaperTODO:目前没有开源代码,实时关注一下officialcode,Meta的工作基本开源的.本文给出了一种新的T2I的方法.lucidrains的代码本质是将LLM的transformer和图像中的diffusion结......
  • 【Linux】深入理解Linux文件系统中的inode
    文章目录深入理解Linux文件系统中的inode1.什么是inode?2.inode的结构示例:3.inode的工作原理4.inode与文件系统的关系5.inode的实际应用6.总结深入理解Linux文件系统中的inode在Linux文件系统中,inode是一个核心概念,它在文件的管理和操作中起着至关重要的作......
  • 【前端工程化-Node.js】Node.js介绍、模块化、模块导入导出语法、npm包管理、同源和跨
    Node.js入门Node.js是什么Node.js是一个跨平台的JavaScript运行环境,主要使用场景有:编写后端程序:充当服务器,对外提供Web服务(接口、数据、网页资源等)前端工程化:对代码进行压缩,转译和整合浏览器和Node环境的对比Node.js内部封装了ChromeV8引擎,因此可以像浏览器一样运......
  • 记录 macos 链接 win10 wsl2 ubuntu clickhouse 记录
    遇到了许多问题顺序应该不同首先就是链接的客户端是DBeaver链接的时候要选择版本低版本的用legacy,   驱动也很重要,下不到驱动的可以用网上找的驱动来安装  有的时候会有类名的问题但是报错很离谱会报  dbeaverclickhouse链接错误code:46Unknow......