使用


let mytool = require("./src/tool/myTool")
mytool.$getFileName("./src/api/user", (res) => {
console.log(res)
mytool.$getFileData(res)
})
文件名称
//获取文件夹中文件名称
tool.prototype.$getFileName = function (data, fn = '') {
let pathName = data.pathName || data,
chouse = data.chouseName || '',
//遍历当前目录下所有文件
dirs = [],//所有文件名集合
iw = 1,//未识别文件夹个数--传入时候就有个文件夹所以是1
ij = 0,//文件个数
doit = (usePathName) => {
//判断文件夹中的文件数量设定为异步,理论上提高读取速度,需要解决的问题是,如何判断是否读取完所有文件
fs.readdir(usePathName, function (err, files) {
let iwIn = 0;
let ijIn = 0;
for (let k in files) {//遍历当中 文件名
//判断是否是文件夹并记录
let stat = fs.lstatSync(path.join(usePathName, files[k]));//同步判断是否是文件夹或者是文件
//选用同步方法是为了正常抛出dirs,不需要再判断是否读取完所有文件
// if (files[k].indexOf(".") === -1) {//若是文件夹,继续遍历
if (stat.isDirectory()) {//若是文件夹,继续遍历
iwIn++;//文件夹数量自加
doit(usePathName + '/' + files[k])
} else {
ijIn++;//文件数量自加
if (chouse) {
usePathName.indexOf(chouse) == -1 || dirs.push({
pathName: usePathName,
fileName: files[k]
});
} else {
dirs.push({
pathName: usePathName,
fileName: files[k]
})
}
}
// fs.stat(path.join(route[r].pathName, route[r].fileName), function (err, data) {})//异步判断是否是文件夹或者是文件
//若选择异步,需要在该异步中,判断文件夹是否读取完
}
//记录总数
iw += (iwIn - 1);//当获取了一个文件夹中的文件后,未读取数量需要减1,就可获得是否读取完所有的文件和文件夹
ij += ijIn;
if (iw == 0) {//当未读取文件夹为0时候,抛出
// console.log("所有文件夹遍历完成,总文件数量为" + ij + "个")
// console.log(dirs)
if (fn) {
fn(dirs)
} else {
console.log("未设置回调")
}
}
});
};
doit(pathName);
}
文件数据
//通过路径获取文件对象内容
tool.prototype.$getFileData = function (data, fn = '') {
let center = [];
let router = data;
if (typeof data === "string") {
// 数据格式
// mytool.$getFileData("../src/api/user/request/user")
let pathName = "../api" + data.split("/api")[1];
let fileData = require(pathName);
//拆数组
for (let i in fileData) {
center.push(fileData[i])
}
} else {
// 数据格式
// [ { pathName: './src/api/user/request', fileName: 'user.js' } ]
for (let k in router) {
let pathName = "../api" + router[k].pathName.split("/api")[1] + "/" + router[k].fileName;
let fileData = require(pathName);
//拆数组
for (let i in fileData) {
center.push(fileData[i])
}
}
}
// 输出
if (fn == '') {
console.log(center)
return center;
} else {
fn(center);
return center;
}
}
这段代码展示了如何使用Node.js读取指定路径下所有文件的名称和数据。`$getFileName`方法遍历目录获取文件名,`$getFileData`方法根据路径读取文件内容。这两个方法可以用于文件管理和数据读取操作。
677

被折叠的 条评论
为什么被折叠?



