首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >获取目录下的所有目录nodejs

获取目录下的所有目录nodejs
EN

Stack Overflow用户
提问于 2013-08-08 03:32:50
回答 12查看 218.7K关注 0票数 332

我希望这会是一件简单的事情,但我找不到任何东西来做到这一点。

我只想获取给定文件夹/目录中的所有文件夹/目录。

举个例子:

代码语言:javascript
复制
<MyFolder>
|- SomeFolder
|- SomeOtherFolder
|- SomeFile.txt
|- SomeOtherFile.txt
|- x-directory

我希望得到一个数组:

代码语言:javascript
复制
["SomeFolder", "SomeOtherFolder", "x-directory"]

或者上面的路径,如果这是它的服务方式...

那么,有没有什么已经存在的东西来做上面的事情呢?

EN

回答 12

Stack Overflow用户

发布于 2014-11-10 04:17:01

使用路径列出目录。

代码语言:javascript
复制
function getDirectories(path) {
  return fs.readdirSync(path).filter(function (file) {
    return fs.statSync(path+'/'+file).isDirectory();
  });
}
票数 59
EN

Stack Overflow用户

发布于 2016-12-01 03:47:13

递归解

我来到这里是为了寻找一种方法来获取所有子目录,以及它们的所有子目录等。在accepted answer的基础上,我编写了以下代码:

代码语言:javascript
复制
const fs = require('fs');
const path = require('path');

function flatten(lists) {
  return lists.reduce((a, b) => a.concat(b), []);
}

function getDirectories(srcpath) {
  return fs.readdirSync(srcpath)
    .map(file => path.join(srcpath, file))
    .filter(path => fs.statSync(path).isDirectory());
}

function getDirectoriesRecursive(srcpath) {
  return [srcpath, ...flatten(getDirectories(srcpath).map(getDirectoriesRecursive))];
}
票数 31
EN

Stack Overflow用户

发布于 2018-11-21 16:18:33

对于node.js版本>= v10.13.0,如果fs.readdirSync选项设置为true,则fs.Dirent将返回withFileTypes对象数组。

所以你可以使用,

代码语言:javascript
复制
const fs = require('fs')

const directories = source => fs.readdirSync(source, {
   withFileTypes: true
}).reduce((a, c) => {
   c.isDirectory() && a.push(c.name)
   return a
}, [])
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18112204

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档