readdirp 使用教程
项目介绍
readdirp
是一个 Node.js 模块,用于递归地读取目录及其子目录中的文件和文件夹。它提供了一个流式 API,可以方便地处理大型目录结构,而不会消耗过多的内存。readdirp
是许多文件系统操作工具的核心组件,适用于需要深度遍历目录树的应用场景。
项目快速启动
安装
首先,你需要安装 readdirp
模块。你可以通过 npm 来安装:
npm install readdirp
基本使用
以下是一个简单的示例,展示如何使用 readdirp
递归地读取目录中的所有文件和文件夹:
const readdirp = require('readdirp');
async function main() {
const directory = './your-directory';
const stream = readdirp(directory, { type: 'all' });
let i = 0;
for await (const chunk of stream) {
console.log(`${++i}: ${chunk.path}`);
}
console.log('Stream done', i);
}
main();
应用案例和最佳实践
案例1:递归删除目录
以下是一个示例,展示如何使用 readdirp
递归地删除一个目录及其所有内容:
const fs = require('fs');
const readdirp = require('readdirp');
async function deleteDirectory(directory) {
const stream = readdirp(directory, { type: 'all' });
for await (const chunk of stream) {
fs.unlinkSync(chunk.fullPath);
console.log(`Deleted: ${chunk.fullPath}`);
}
fs.rmdirSync(directory);
console.log(`Deleted directory: ${directory}`);
}
deleteDirectory('./your-directory');
案例2:查找特定文件
以下是一个示例,展示如何使用 readdirp
查找特定类型的文件(例如,所有 .txt
文件):
const readdirp = require('readdirp');
async function findTxtFiles(directory) {
const stream = readdirp(directory, { fileFilter: ['*.txt'] });
for await (const chunk of stream) {
console.log(`Found txt file: ${chunk.fullPath}`);
}
}
findTxtFiles('./your-directory');
典型生态项目
globby
globby
是一个基于 glob
的模块,用于匹配文件路径。它内部使用了 readdirp
来实现递归目录遍历,提供了更高级的文件匹配功能。
make-dir
make-dir
是一个用于递归创建目录的模块。虽然它不直接使用 readdirp
,但两者在处理目录结构时具有相似的递归特性。
readdir-glob
readdir-glob
是一个结合了 readdirp
和 glob
功能的模块,提供了更灵活的文件匹配和目录遍历功能。
通过这些生态项目,你可以扩展 readdirp
的功能,满足更复杂的文件系统操作需求。