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
算法:递归