MST
星途 面试题库

面试题:Node.js 文件系统批量读取指定类型文件

在Node.js中,如何使用文件系统模块(fs)批量读取一个目录下所有扩展名为 '.txt' 的文件内容,并将它们的内容合并成一个字符串返回?请写出具体代码实现。
28.3万 热度难度
前端开发Node.js

知识考点

AI 面试

面试题答案

一键面试
const fs = require('fs');
const path = require('path');

function readTxtFilesInDir(dirPath) {
    return new Promise((resolve, reject) => {
        fs.readdir(dirPath, (err, files) => {
            if (err) {
                reject(err);
                return;
            }
            const txtFiles = files.filter(file => path.extname(file) === '.txt');
            const readPromises = txtFiles.map(file => {
                const filePath = path.join(dirPath, file);
                return new Promise((resolveInner, rejectInner) => {
                    fs.readFile(filePath, 'utf8', (err, data) => {
                        if (err) {
                            rejectInner(err);
                        } else {
                            resolveInner(data);
                        }
                    });
                });
            });
            Promise.all(readPromises)
               .then(dataList => {
                    const mergedContent = dataList.join('');
                    resolve(mergedContent);
                })
               .catch(err => {
                    reject(err);
                });
        });
    });
}

// 使用示例
const directory = './your-directory';
readTxtFilesInDir(directory)
   .then(mergedContent => {
        console.log(mergedContent);
    })
   .catch(err => {
        console.error(err);
    });