1、读取文件夹里面,所有是js的文件
const fs = require('fs');
const path = require('path');
// 读取文件夹中的所有文件
function readDirFiles(dir, fileList) {
const files = fs.readdirSync(dir);
fileList = fileList || [];
files.forEach(function(file) {
const filePath = path.join(dir, file);
if (fs.statSync(filePath).isDirectory()) {
fileList = readDirFiles(filePath, fileList);
} else {
if (filePath.endsWith('.js')) {
fileList.push(filePath);
}
}
});
return fileList;
}
// 读取指定文件夹中的所有JS文件
const fileList = readDirFiles('./src');
console.log(fileList);
用到的node的api有:readdirSync、statSync、isDirectory、readDirFiles、endsWith
用到算法:递归
2、用node的api实现一个脚本,读取某一个文件夹里所有的js代码,并读取输出到一个指定的文件里。
const fs = require('fs');
const path = require('path');
// 读取文件夹中的所有文件
function readDirFiles(dir, fileList) {
const files = fs.readdirSync(dir);
fileList = fileList || [];
files.forEach(function(file) {
const filePath = path.join(dir, file);
if (fs.statSync(filePath).isDirectory()) {
fileList = readDirFiles(filePath, fileList);
} else {
if (filePath.endsWith('.js')) {
const content = fs.readFileSync(filePath, { encoding: 'utf-8' });
fileList.push({ path: filePath, content });
}
}
});
return fileList;
}
// 将JS文件写入文件
function writeFile(fileList, outputPath) {
const stream = fs.createWriteStream(outputPath);
fileList.forEach(file => {
const jsCode = `// File Path: ${file.path}
${file.content}
`;
stream.write(jsCode);
});
stream.end();
}
// 读取指定文件夹中的所有JS文件,并将JS代码写入指定输出文件中
const fileList = readDirFiles('/path/to/your/folder');
writeFile(fileList, '/path/to/your/output.js');
用到的api:readdirSync、statSync、isDirectory、endsWith、readFileSync、createWriteStream
可以看出,对比问题1,多用了两个api,读取文件和写入文件readFileSync、createWriteStream
算法:递归
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。