//需求:根据用户输入的文件地址,来进行文件夹的打开 ,如果是文件夹遍历其中文件,如果是文件读取其中文件
//步骤
//1.对用户输入的文件地址进行整理
//判断是否存在 存在继续执行,不存在进行报错
//如果存在判断是文件还是文件夹
//文件打开,文件夹继续打开
//引用核心对象
const path = require('path')
const fs = require('fs')
//进行输入文件地址
let inputPath = path.resolve(process.argv[2])
console.log(inputPath);
//定义函数
function readallfile(inputPath) {
//判断是否存在
try {
fs.accessSync(inputPath, fs.constants.F_OK)
//console.log("文件存在");
//判断是文件还是文件夹
let state = fs.statSync(inputPath)
if (state.isFile()) {
// console.log("是个文件");
//读出文件
fs.readFile(inputPath, 'utf8', (err, data) => {
if (err) throw err
console.log(data);
})
} else if (state.isDirectory()) {
console.log("是文件夹");
//如果是文件夹,打开
console.log(inputPath);
//通过异步的方式打开文件夹
fs.readdir(inputPath, (err, data) => {
if (err) throw err
// console.log(data); //[ 'aa.txt', 'bb' ]
if (data.length !== 0) {
//再次调用该函数,但文件地址得进行改变
//因为是个数组,所以要解决文件的绝对地址所以要进行遍历
data.forEach(item => {
//对文件夹下的文件进行文件地址的拼接
//来获取文件的绝对地址
let pathsecond = path.join(inputPath, item)
console.log(pathsecond);
//然后再进行调用 函数的递归
a(pathsecond)
})
}
})
// console.log(files);
}
} catch (error) {
console.log("文件不存在");
}
}
//调用函数
readallfile(inputPath)
测试文件夹配置
测试结果