前言
今天学习了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)
}
}
})
}