node.js学习-fs模块打印目录树

157 阅读1分钟

前言

今天学习了node.js的文件管理系统,简单记录下打印目录树的实现

使用到的api

1.读取目录

//path:必填文件夹路径
//options:可选,一些读取配置
//callback:必填读取成功的回调(err,data)=>{}
fs.readdir(path,options,callback)
//同步读取
fs.readdirSync(path,options)

2.同步判断文件类型

//path:必填文件夹路径
const res = fs.statSync(path)
//判断是否是文件
res.isFile()

3.拼接路径

const {resolve} = require('path')

打印目录树

const fs = require('fs')
const { resolve } = require('path')

const readDirTree = root => {
  fs.readdir(root, (err, data) => {
    //记录读取文件/文件夹名称及拼接路径
    let fileArr = data.map((file) => ({
      name: file,
      path: resolve(__dirname, root, file),
    }))
    while (fileArr.length) {
      //全部为同步操作保证执行顺序
      const { path, name } = fileArr.shift()
      console.log(name)
      try {
        const res = fs.statSync(path)
        if (res.isFile()) {
        } else {
          const data = fs.readdirSync(path)
          fileArr.unshift(
            ...data.map((fileChild) => ({
              name: fileChild,
              path: resolve(path, fileChild),
            }))
          )
        }
      } catch (e) {
        console.log(e)
      }
    }
  })
}