具体步骤
- 引入必要模块:在Node.js中,使用
fs
模块来读取文件,path
模块用于处理文件路径。
- 读取文件内容:利用
fs
模块的异步读取函数,如fs.readFile
,并将其包装为Promise(如果该函数本身不返回Promise),这样可以使用Promise的链式调用或async/await
语法。
- 合并数据:在读取完所有文件内容后,对这些数据进行合并处理。
核心代码示例(使用Promise)
const fs = require('fs');
const path = require('path');
function readFileAsync(filePath) {
return new Promise((resolve, reject) => {
fs.readFile(filePath, 'utf8', (err, data) => {
if (err) {
reject(err);
} else {
resolve(data);
}
});
});
}
const filePaths = [
path.join(__dirname, 'file1.txt'),
path.join(__dirname, 'file2.txt'),
path.join(__dirname, 'file3.txt')
];
Promise.all(filePaths.map(filePath => readFileAsync(filePath)))
.then(dataArray => {
let mergedData = '';
dataArray.forEach(data => {
mergedData += data;
});
console.log(mergedData);
})
.catch(err => {
console.error(err);
});
核心代码示例(使用async/await)
const fs = require('fs');
const path = require('path');
function readFileAsync(filePath) {
return new Promise((resolve, reject) => {
fs.readFile(filePath, 'utf8', (err, data) => {
if (err) {
reject(err);
} else {
resolve(data);
}
});
});
}
const filePaths = [
path.join(__dirname, 'file1.txt'),
path.join(__dirname, 'file2.txt'),
path.join(__dirname, 'file3.txt')
];
async function readAndMergeFiles() {
try {
const dataArray = await Promise.all(filePaths.map(filePath => readFileAsync(filePath)));
let mergedData = '';
dataArray.forEach(data => {
mergedData += data;
});
console.log(mergedData);
} catch (err) {
console.error(err);
}
}
readAndMergeFiles();