MENU
代码
const fs = require('fs');
const path = require('path');
// 文件夹路径
// C:\mssj\web\web-case\case\nodeJs\index.js
// C:\mssj\web\web-case\case\nodeJs\index.html
// C:\mssj\web\web-case\case\ajaxProgressMonitoring\index.html
const folderPath = '../../case';
// 读取文件夹中的内容
fs.readdir(folderPath, (err, files) => {
if (err) throw new Error(JSON.stringify(err));
// 过滤出文件夹
let subfolders = files.filter(file => fs.statSync(path.join(folderPath, file)).isDirectory());
// 输出子文件夹名称
subfolders.forEach(_FN => {
const filePath = `../${_FN}/index.html`;
fs.readFile(filePath, 'utf8', (err, data) => {
if (err) throw new Error(JSON.stringify(err));
const titleRegex = /<title>(.*?)<\/title>/gi;
const matches = titleRegex.exec(data);
if (matches && matches.length > 1) {
const title = matches[1];
console.log(`| ${_FN} | ${title} |`);
} else {
throw new Error('Title tag not found in the HTML file.');
}
});
});
});
解析
标签:node,web,fs,const,读取,err,html,文件夹,throw From: https://blog.csdn.net/weixin_51157081/article/details/115033504这段代码是一个Node.js脚本,用于读取指定文件夹中的内容,过滤出其中的子文件夹,并读取每个子文件夹中的index.html文件,从中提取html文件标题(title)信息,并输出到控制台。
01、
const fs = require('fs');
和const path = require('path');
两行代码引入Node.js内置的文件系统模块fs和路径处理模块path。
02、const folderPath = '../../case';
定义要读取的文件夹路径。
03、fs.readdir(folderPath, (err, files) => { ... });
使用fs模块中的readdir函数读取指定路径的文件夹内容。这个函数接受一个回调函数作为参数,回调函数有两个参数,可能出现的错误err和读取到的文件列表files。
04、if (err) throw new Error(JSON.stringify(err));
如果在读取文件夹时发生了错误,则抛出错误并终止程序执行。
05、let subfolders = files.filter(file => fs.statSync(path.join(folderPath, file)).isDirectory());
通过使用filter方法筛选出文件夹。这里使用了fs.statSync来同步获取文件信息,isDirectory()用于判断是否是文件夹。
06、subfolders.forEach(_FN => { ... });
对筛选出的文件夹列表进行遍历。
07、const filePath = ../${_FN}/index.html;
构建index.html文件的路径。
08、fs.readFile(filePath, 'utf8', (err, data) => { ... });
使用fs模块的readFile函数读取index.html文件。回调函数接受两个参数,可能出现的错误err和读取到的文件内容data。
09、const titleRegex = /<title>(.*?)<\/title>/gi;
定义了一个正则表达式,用于匹配HTML文件中的标题title标签。
10、const matches = titleRegex.exec(data);
使用正则表达式在HTML文件内容中查找匹配的标题标签。
11、if (matches && matches.length > 1) { ... }
如果匹配到了标题标签,并且匹配结果的长度大于1(即匹配到了标题内容),则执行const title = matches[1];
来获取匹配到的标题内容。
12、console.log(| ${_FN} | ${title} |);
将文件夹名称和对应的标题内容输出到控制台。
13、else { throw new Error('Title tag not found in the HTML file.'); }
如果在HTML文件中未找到标题标签,则抛出错误并终止程序执行。