//调用fs模块const fs =require("fs");const _path =require("path")//封装函数functionreddirtoString(dirpath){//如果说传入的类型不是string类型的话则报错if(typeof dirpath !=="string"){thrownewerror(" this is not String");}//判断当前路径不是位绝对路径if(!_path.isabsolute(dirpath)){//将非绝对路径转换位绝对路径//__dirpath:当前目录路径//将当前目录路径链接dirpath路径在返回给dirpath//绝对路径搜索比相对路径更快
dirpath = _path.join(__dirpath,dirpath)}//readdirsync("path")没有回调函数返回当前路径下的目录名const result = fs.readdirSync(dirpath);//返回 遍历好的值return result.map((value)=>{//通过path模块的join链接dirpath和value值const path = _path.join(dirpath,value)//搜索当前文件是否位dir目录或file文件const type = fs.statSync(path).isDirectory()?"dir":"file";let children =null;if(type ==="dir"){
如果是dir目录的话则在执行一次
children =reddirtoString(path);}return{
path,
type,
children
}})}const dirname =reddirtoString("../hell")//stringify(要转换的文件,是否替换,空格数)//将文件转换位json格式
console.log(JSON.stringify(dirname,null,2));