介绍
readdir-cluster 是一个用于读取文件系统目录的 npm 包。与 Node.js 的原生 fs.readdir 方法不同,readdir-cluster 可以在多个进程中并行读取目录,以提高性能和效率。
安装
要使用 readdir-cluster,请首先安装它。可以使用以下命令将其作为依赖项添加到您的项目中:
npm install readdir-cluster
快速入门
readdir-cluster 的基本用法非常简单。要使用它,只需调用 readdir
函数并传入要读取的目录路径即可。例如:
const readdir = require('readdir-cluster'); readdir('/path/to/directory', (err, files) => { if (err) throw err; console.log(files); });
此代码将打印指定目录下的所有文件名和子目录名数组。
参数
readdir 函数接受三个参数:要读取的目录路径,选项和回调函数。
目录路径
要读取的目录路径是必需的参数。可以将其指定为相对或绝对路径。
readdir('./my-directory', (err, files) => { /* ... */ }); readdir('/path/to/my-directory', (err, files) => { /* ... */ });
选项
选项是可选的参数,用于配置如何读取目录。readdir-cluster 支持以下选项:
workers
:要使用的进程数,默认为 CPU 核心数。可以将其设置为数字或 'max',指定要使用的进程数。concurrency
:每个进程同时读取目录的文件数,默认为 100。可以将其设置为数字以更改此限制。filter
:一个函数,用于筛选要返回的文件和目录。如果此选项未提供,则返回所有文件和目录。depth
:要读取的子目录的最大深度,默认为 Infinity。
例如,要仅获取扩展名为 .txt
的文件和子目录:
readdir('./my-directory', { filter: file => file.endsWith('.txt') }, (err, files) => { /* ... */ });
回调函数
回调函数是必需的参数,用于在读取完成后接收结果。它具有两个参数:错误和文件数组。如果出现任何错误,错误参数将包含该错误的信息。否则,文件参数将包含目录中的所有文件和子目录名。
高级使用
除了基本用法,readdir-cluster 还提供了一些高级功能,可帮助您更好地控制如何读取目录。
手动控制进程
默认情况下,readdir-cluster 会自动创建并管理多个进程,以并行读取目录。但是,如果需要更细粒度的控制,您可以手动创建和管理进程池。
-- -------------------- ---- ------- ----- - ---------- - - --------------------------- -- ----- ----- ---- - -------------------------------- - -------- - --- -- -- ------- ------------------ ------ -- - -- ----- ----- ---- ------------------- --- -- ----- -------------展开代码
此代码将创建一个包含 4 个进程的进程池,并使用它来读取指定目录。在调用 readdir
方法后,进程池会立即开始处理请求。最后,可以调用 close
方法来关闭进程池。
使用流式 API
如果您正在处理大量文件或需要逐步处理读取的文件,则可以使用 readdir-cluster 的流式 API。此 API 返回一个可读流,该流逐步发出读取到的每个文件。
-- -------------------- ---- ------- ----- - ---------------- - - --------------------------- ----- ------ - --------------------------------------- ----------------- ---- -- - ------------------ --- -------------- - ----------------------------------------------------------- -------- ----------------------------------------------------------------------------------展开代码