如何获取所有二级子目录路径?(基于Node.js fs模块)
获取二级目录下所有项目的完整路径
假设文件夹结构如下:
/apps |- /group1 | |- /project1 | |- /project2 |- /group2 | |- /project3 | |- /project4
需求是获取所有组文件夹下的项目文件夹路径,最终要得到这样的结果:
[ 'apps/group1/project1', 'apps/group1/project2', 'apps/group2/project3', 'apps/group2/project4' ]
现有代码只能返回一级组目录(['group1', 'group2']),需要嵌套遍历才能拿到二级项目路径,修改后的代码如下:
import { readdirSync } from 'fs'; import { join } from 'path'; const appsDir = join(rootPath, 'apps'); // 先获取所有组目录 const groupDirs = readdirSync(appsDir, { withFileTypes: true }) .filter(item => item.isDirectory()) .map(item => item.name); // 遍历每个组目录,获取项目目录并拼接完整路径 const projectPaths = groupDirs.flatMap(groupName => { const groupDirPath = join(appsDir, groupName); return readdirSync(groupDirPath, { withFileTypes: true }) .filter(item => item.isDirectory()) .map(item => join('apps', groupName, item.name)); }); console.log(projectPaths);
代码说明
- 用
path.join处理路径拼接,避免手动拼接字符串引发的路径分隔符问题 - 先通过原逻辑拿到所有组目录,再用
flatMap遍历每个组目录,读取其中的项目文件夹 - 最终拼接成
apps/组名/项目名的格式,得到预期的路径数组
内容的提问来源于stack exchange,提问作者user3142695
相关产品推荐
相关产品推荐

